できるだけ見通しよくって言うか,素人なのでそういうのしか書けないのだが,
一旦元の文章を文字の要素で区切って(半角カナは濁点半濁点含め1文字扱い)
Alleyに突っ込んで,次にAlleyの要素を順に評価して半角英数記号ならこう,
半角カナ記号ならこう,残りはこうじゃ,って全角に変換して
半角⇒全角変換習作
function CnvHtoF(str){
HarfArray = ["ァ","ィ","ゥ","ェ","ォ","ッ","ャ","ュ","ョ","ア","イ","ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ヲ","ン","゙","゚","ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","ヴ","パ","ピ","プ","ペ","ポ","ー","。","、","「","」"];
FullArray = ["ァ","ィ","ゥ","ェ","ォ","ツ","ャ","ュ","ョ","ア","イ","ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ヲ","ン","゛","゜","ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","ヴ","パ","ピ","プ","ペ","ポ","ー","。","、","「","」"];
strarray=[];
CnvStr="";
for(i=0; i<str.length; i++){
if(str.substr(i,1)=="゙"||str.substr(i,1)=="゚"){
strarray.pop();
strarray.push(str.substr(i-1,2));
continue
}
strarray.push(str.substr(i,1));
}
for(i=0; i<strarray.length; i++){
if(/[ -~]/.test(strarray[i])){
CnvStr = CnvStr + String.fromCharCode(strarray[i].charCodeAt(0)+0xFEE0);
}else if(HarfArray.indexOf(strarray[i])!=-1){
CnvStr = CnvStr + FullArray[HarfArray.indexOf(strarray[i])];
}else{
CnvStr = CnvStr + strarray[i];
}
}
return CnvStr;
}
半角カナはこの糞ったらしい変換テーブル用意するしか無いのか知らん.