やっぱりのんびり更新。

読者登録して頂いたみなさま。申し訳ねぇ。

気温が上がったり下がったり、静電気パチパチな季節、いかがお過ごしでしょうか。

管理人はパチパチ体質です。

静電気が弾ける音が聞こえるくらいのパチパチです。

今朝、玄関先で金属製のドアノブに文句たれました。


「ドアノブから返事はない、ただのドアノブのようだ」


・・・痛かったっす、ドアノブ。


そんな事はさておいて、今回はJavaプログラマーらしくサンプルソースです。

動作確認済み。

応用できれば置換プログラムになります。


○環境

windows 2000

J2SDK 1.4.2

Eclipse 3.1


//以下ソース-----------------------------------------------

public class HankakuToZenkaku {

/** 全角英数字 */
private static String sZen = "0123456789"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz";

/** 半角英数字 */
private static String sHan = "0123456789"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

/**
* 半角英数字->全角英数字に置換する。
* 原理は、置換対象文字列 sSrc から1文字づつ取り出して
* sHan に該当する文字があったら、その文字が何文字目にあるか取得して、sZen から同じ文字目から文字を
* 取ると、全角にすり返るという方法。
* 例)
* sSrc = "ab1";
* 1番目の文字 "a" は、sHanの36文字目なので、sZenの36文字目は、"a"で、置換
* 2番目の文字 "b" は、sHanの37文字目なので、sZenの37文字目は、"b"で、置換
* 3番目の文字 "1" は、sHanの1文字目なので、sZenの1文字目は、"1"で、置換
* @param args
*/
public static void main(String[] args) {

String sSrc = "aABBあ漢字-zYあ"; //変換対象文字

//対象文字数分ループ
for (int iLoop = 0; iLoop < sSrc.length(); iLoop++) {

//1.対象文字列よりiLoop番目の文字取得
//2.文字型を文字型に変換
//3.sHan(半角文字)の何番目に該当するか取得->iPosに格納
int iPos = sHan.indexOf(String.valueOf(sSrc.charAt(iLoop)));

//sHan(半角文字)に該当する文字があった場合
if(iPos > -1) {

//sSrc = sSrcの0~iLoop番目の文字列を取得
// + sZen(全角文字)からiPos番目の文字を1つ取得
// + sSrcのiLoop番目+1より後ろの文字列を取得
sSrc = sSrc.substring(0,iLoop) + sZen.charAt(iPos) + sSrc.substring(iLoop+1);
}
}

//変換後出力
System.out.println(sSrc);
}
}


//ここまで-----------------------------------------------

<参考リンク>

●FAQ/29 - SakuraEditorWiki

http://sakura.qp.land.to/?FAQ%2F29
サンプルマクロ 英数字のみ全角→半角(js) をJavaにアレンジ

 ○[親リンク] SakuraEditorWiki
http://sakura.qp.land.to/

記事がお役に立てたら、クリックお願いします。