function asc(args){
if (typeof args == "string") {
// 全角カタカナ⇒半角カタカナ
//変換テーブル:2つの配列の要素数が一致しない場合空白文字が戻り値になる、かならず揃えること
//replace_table_base:変換対象(検索)文字(wchar_t)
//replace_table_to:置換文字(wchar_t)
//ッ, ヮ, ワ, ヰ, ヱ, ヲ, ン, ヵ, ヶ
var replace_table_base = [
0x30c3, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f1, 0x30f3, 0x30f5, 0x30f6
]
var replace_table_to = [
0xff6f, 0xff9c, 0xff9c, 0xff72, 0xff74, 0xff66, 0xff9d, 0xff76, 0xff79
]
if(replace_table_base.length != replace_table_to.length) return "";//プログラミングミス防止
// 変換テーブルによる変換
for(var i = 0; i < replace_table_to.length; i++){
args = args.replace(new RegExp(String.fromCharCode(replace_table_base[i]), "g"), String.fromCharCode(replace_table_to[i]));
}
args = args.replace(/ヴ/g, "ヴ");
args = args.replace(/[ァ-オ]/g, function(s){
var c1 = s.charCodeAt(0);
var c2 = c1 / 2;
if(c1 % 2){
return String.fromCharCode(c2 + 0xe717);//小さいカナ
}
else{
return String.fromCharCode(c2 + 0xe720);//普通のかな
}
});
args = args.replace(/[カ-ヂ]/g, function(s){
var c1 = s.charCodeAt(0);
var c2 = c1 / 2;
if(c1 % 2){
return String.fromCharCode(c2 + 0xe721);//無濁点
}
else{
return String.fromCharCode(c2 + 0xe720, 0xff9f);//有濁点
}
});
args = args.replace(/[ツ-ド]/g, function(s){
var c1 = s.charCodeAt(0);
var c2 = c1 / 2;
if(c1 % 2){
return String.fromCharCode(c2 + 0xe720, 0xff9f);//有濁点
}
return String.fromCharCode(c2 + 0xe720);
});
args = args.replace(/[ナ-ハ]/g, function(s){
return String.fromCharCode(s.charCodeAt(0) + 0xcebb);
});
args = args.replace(/[バ-ポ]/g, function(s){
var c1 = s.charCodeAt(0);
var c2 = c1 / 3;
switch(c1 % 3){
case 2:
return String.fromCharCode(c2 + 0xEF45, 0xff9f);//゚
break;
case 1:
return String.fromCharCode(c2 + 0xEF45, 0xff9e);//゙
default:
return String.fromCharCode(c2 + 0xEF45);
break;
}
});
args = args.replace(/[マ-モ]/g, function(s){
return String.fromCharCode(s.charCodeAt(0) + 0xceb1);
});
args = args.replace(/[ャ-ョ]/g, function(s){
var c1 = s.charCodeAt(0);
var c2 = c1 / 2;
if(c1 % 2){
return String.fromCharCode(c2 + 0xe6fb);//小さいカナ
}
else{
return String.fromCharCode(c2 + 0xe722);//普通のかな
}
});
args = args.replace(/[ヨ-ロ]/g, function(s){
return String.fromCharCode(s.charCodeAt(0) + 0xceae);
});
return args;
} else {
var s = "";
for (var i = 0; i < args.length; i++) {
s += args[i];
}
return s;
}
}