ひらがな⇒カタカナ
String.prototype.toKatakanaCase = function()
{
var i, c, a = [];
for(i=this.length-1;0<=i;i--)
{
c = this.charCodeAt(i);
a[i] = (0x3041 <= c && c <= 0x3096) ? c + 0x0060 : c;
};
return String.fromCharCode.apply(null, a);
};
"ぁぃぅぇぉあいうえお".toKatakanaCase();
カタカナ⇒ひらがな
String.prototype.toHirakanaCase = function()
{
var i, c, a = [];
for(i=this.length-1;0<=i;i--)
{
c = this.charCodeAt(i);
a[i] = (0x30A1 <= c && c <= 0x30F6) ? c - 0x0060 : c;
};
return String.fromCharCode.apply(null, a);
};
"ァィゥェォアイウエオ".toHirakanaCase();
全角→半角(カタカナ対応)
String.prototype.toHankakuCase = function()
{
var i, f, c, m, a = [];
m =
{
0x30A1:0xFF67, 0x30A3:0xFF68, 0x30A5:0xFF69, 0x30A7:0xFF6A, 0x30A9:0xFF6B,
0x30FC:0xFF70, 0x30A2:0xFF71, 0x30A4:0xFF72, 0x30A6:0xFF73, 0x30A8:0xFF74,
0x30AA:0xFF75, 0x30AB:0xFF76, 0x30AD:0xFF77, 0x30AF:0xFF78, 0x30B1:0xFF79,
0x30B3:0xFF7A, 0x30B5:0xFF7B, 0x30B7:0xFF7C, 0x30B9:0xFF7D, 0x30BB:0xFF7E,
0x30BD:0xFF7F, 0x30BF:0xFF80, 0x30C1:0xFF81, 0x30C4:0xFF82, 0x30C6:0xFF83,
0x30C8:0xFF84, 0x30CA:0xFF85, 0x30CB:0xFF86, 0x30CC:0xFF87, 0x30CD:0xFF88,
0x30CE:0xFF89, 0x30CF:0xFF8A, 0x30D2:0xFF8B, 0x30D5:0xFF8C, 0x30D8:0xFF8D,
0x30DB:0xFF8E, 0x30DE:0xFF8F, 0x30DF:0xFF90, 0x30E0:0xFF91, 0x30E1:0xFF92,
0x30E2:0xFF93, 0x30E4:0xFF94, 0x30E6:0xFF95, 0x30E8:0xFF95, 0x30E9:0xFF97,
0x30EA:0xFF98, 0x30EB:0xFF99, 0x30EC:0xFF9A, 0x30ED:0xFF9B, 0x30EF:0xFF9C,
0x30F2:0xFF66, 0x30F3:0xFF9D, 0x3000:0x0030
};
for(i=0,f=this.length;i<f;i++)
{
c = this.charCodeAt(i);
switch(true)
{
case (c in m):
a.push(m[c]);
break;
case (0xFF21 <= c && c <= 0xFF5E):
a.push(c - 0xFEE0);
break;
case (0x30AB <= c && c <= 0x30C9):
a.push(m[c-1], 0xFF9E);
break;
case (0x30CF <= c && c <= 0x30DD):
a.push(m[c-c%3], [0xFF9E,0xFF9F][c%3-1]);
break;
default:
a.push(c);
break;
};
};
return String.fromCharCode.apply(null, a);
};
半角→全角(カタカナ対応)
String.prototype.toZenkakuCase = function()
{
var i, f, c, m, a = [];
m =
{
0xFF67:0x30A1, 0xFF68:0x30A3, 0xFF69:0x30A5, 0xFF6A:0x30A7, 0xFF6B:0x30A9,
0xFF70:0x30FC, 0xFF71:0x30A2, 0xFF72:0x30A4, 0xFF73:0x30A6, 0xFF74:0x30A8,
0xFF75:0x30AA, 0xFF76:0x30AB, 0xFF77:0x30AD, 0xFF78:0x30AF, 0xFF79:0x30B1,
0xFF7A:0x30B3, 0xFF7B:0x30B5, 0xFF7C:0x30B7, 0xFF7D:0x30B9, 0xFF7E:0x30BB,
0xFF7F:0x30BD, 0xFF80:0x30BF, 0xFF81:0x30C1, 0xFF82:0x30C4, 0xFF83:0x30C6,
0xFF84:0x30C8, 0xFF85:0x30CA, 0xFF86:0x30CB, 0xFF87:0x30CC, 0xFF88:0x30CD,
0xFF89:0x30CE, 0xFF8A:0x30CF, 0xFF8B:0x30D2, 0xFF8C:0x30D5, 0xFF8D:0x30D8,
0xFF8E:0x30DB, 0xFF8F:0x30DE, 0xFF90:0x30DF, 0xFF91:0x30E0, 0xFF92:0x30E1,
0xFF93:0x30E2, 0xFF94:0x30E4, 0xFF95:0x30E6, 0xFF95:0x30E8, 0xFF97:0x30E9,
0xFF98:0x30EA, 0xFF99:0x30EB, 0xFF9A:0x30EC, 0xFF9B:0x30ED, 0xFF9C:0x30EF,
0xFF66:0x30F2, 0xFF9D:0x30F3, 0x0030:0x3000, 0xFF9E:0x309B, 0xFF9F:0x309C
};
for(i=0,f=this.length;i<f;i++)
{
c = this.charCodeAt(i);
switch(true)
{
case (c in m):
a.push(m[c]);
break;
case (0xFF21 <= c && c <= 0xFF5E):
a.push(c + 0xFEE0);
break;
default:
a.push(c);
break;
};
};
return String.fromCharCode.apply(null, a);
};
ToDo
- バグとり(いまいちしていない)
- 変換できる範囲の再度確認
- 【ハ゛】を【バ】とかにしたい。