やっぱりのんびり更新。
読者登録して頂いたみなさま。申し訳ねぇ。
気温が上がったり下がったり、静電気パチパチな季節、いかがお過ごしでしょうか。
管理人はパチパチ体質です。
静電気が弾ける音が聞こえるくらいのパチパチです。
今朝、玄関先で金属製のドアノブに文句たれました。
「ドアノブから返事はない、ただのドアノブのようだ」
・・・痛かったっす、ドアノブ。
そんな事はさておいて、今回は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/
記事がお役に立てたら、クリックお願いします。