JavaScript
function convertKanaF2H(str) {
str.value = replaceStringByArrayOfIndex(str.value, WKANA, HKANA);
}
function convertKanaH2F(str) {
str.value = replaceStringByArrayOfIndex(str.value, HKANA2, WKANA2);
}
function replaceStringByArrayOfIndex(str, src, dest) {
var len = src.length;
for (var i = 0; i < len; i++) {
str = replaceAll(str, src[i], dest[i])
}
return str;
}
function replaceAll(target, from, to) {
console.log(target+" "+from+" "+to);
if (target.indexOf(from) < 0) {
return target;
} else {
return target.split(from).join(to)
}
}
var HKANA = new Array(
"ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド", "バ", "ビ", "ブ", "ベ", "ボ", "ヴ", //濁音
"パ", "ピ", "プ", "ペ", "ポ", //半濁音
"ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "", // 小文字
"ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", // 50音
"サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ツ", "テ", "ト",
"ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ",
"マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ",
"ラ", "リ", "ル", "レ", "ロ", "ワ", "", "ヲ", "", "ン" // 50音 end
);
var HKANA2 = new Array(
"ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド", "バ", "ビ", "ブ", "ベ", "ボ", "ヴ", //濁音
"パ", "ピ", "プ", "ペ", "ポ", //半濁音
"ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ー", // 小文字
"ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", // 50音
"サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ツ", "テ", "ト",
"ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ",
"マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ",
"ラ", "リ", "ル", "レ", "ロ", "ワ", "ヲ", "ン" // 50音 end
);
var WKANA = new Array(
"ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ",
"ダ", "ヂ", "ヅ", "デ", "ド", "バ", "ビ", "ブ", "ベ", "ボ", "ヴ", //濁音
"パ", "ピ", "プ", "ペ", "ポ", //半濁音
"ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ヮ", // 小文字
"ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", // 50音 start
"サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ツ", "テ", "ト",
...