var toHiragana = (function ( reg, func ) { return function ( str, sw ) { sw && ( str = str.replace( reg.toKA, 'カ' ).replace( reg.toKE, 'ケ' ) ); return str.replace( reg.toKANA, func ) }; })( { 'toKA': /ヵ/g, 'toKE': /ヶ/g, 'toKANA': /([ァ-ン])/g }, function ( c ) { return String.fromCharCode( c.charCodeAt(0) - 96) } ) var toKatakana = (function ( reg, func ) { return function ( str ) { return str.replace( reg, func ); }; })( /([ぁ-ん])/g, function (c){ return String.fromCharCode(c.charCodeAt(0) + 96) } ); var toHankaku = function ( str ) { return str.replace(/”/g,'"').replace(/’/g,"'").replace(/([!-〜 ])/g, function (char){ return String.fromCharCode(char.charCodeAt(0) - 65248)} ); };