homeホームHTMLに役立つヒントJAVAスクリプトコレクション > 半角カナを全角カナに変換する

半角カナを全角カナに変換する


 必要に迫られて開発したスクリプト。かなり強引なスクリプトなので、パワーのないクライアントだと動作速度は鈍いでしょう。

「変換ボタン」を押すと、半角カナが全角に変換されてアラートウインドウで表示されます。


●キモになるJAVAscriptのソース

function tozenkaku(){
	//配列を用意する
	hankaku = new Array("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ヂ", "ヅ", "デ", "ド", "バ", "パ", "ビ", "ピ", "ブ", "プ", "ベ", "ペ", "ボ", "ポ", "ヴ", "ァ", "ア", "ィ", "イ", "ゥ", "ウ", "ェ", "エ", "ォ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ッ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ャ", "ヤ", "ュ", "ユ", "ョ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ヲ", "ン", "。", "「", "」", "、", "・", "ー", "゙", "゚");
	zenkaku  = new Array("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ヂ", "ヅ", "デ", "ド", "バ", "パ", "ビ", "ピ", "ブ", "プ", "ベ", "ペ", "ボ", "ポ", "ヴ", "ァ", "ア", "ィ", "イ", "ゥ", "ウ", "ェ", "エ", "ォ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ッ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ャ", "ヤ", "ュ", "ユ", "ョ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ヲ", "ン", "。", "「", "」", "、", "・", "ー", "゛", "゜");
	thismoji = document.test.moji.value; // 文字を取得
	//変換開始
	for (i=0; i<=88; i++) { //89文字あるのでその分だけ繰り返す
		while (thismoji.indexOf(hankaku[i]) >= 0){ //該当する半角カナがなくなるまで繰り返す
			thismoji = thismoji.replace(hankaku[i], zenkaku[i]); //半角カナに対応する全角カナに置換する
		}
	}
	window.alert(thismoji); //変換が終わったら表示
}

 スクリプトの中にだいたいの解説は書いてありますが、もうちょっと詳しく解説してみます。

1. 半角カナと、それに対応する全角カナの配列を「new Array」で用意します。

2. このスクリプトではtextareaから文字列を取得します。

3. 配列は89文字あるので、文字数だけ動作(次の4.の動作)を繰り返します。スクリプトでは「for (i=0; i<=88; i++) {」となっていますが、配列は1からではなく、0から数え始めるため、「1から89」ではなく「0から88」となるからです。

4. indexOfで、それぞれの半角カナ文字が文字列にでてくるかどうかを調べ、あったら対応する全角文字列にreplaceで置換します。

 置換命令は1回の命令で1マッチ分だけしか変換しません。つまり、文字列中の最初の1箇所しか置換しないので、複数同じ文字がでてきた場合、後ろの文字は半角のまま残ります。そこで、「while (indexOf)」で半角文字がなくなるまで繰り返させています。

5. 変換後の文字列をアラートウインドウで表示させます。


homeホームHTMLに役立つヒントJAVAスクリプトコレクション > 半角カナを全角カナに変換する