最初に、ナンセンス^_^について話します
コードコピーは次のとおりです。
/**
*完全な幅の文字を回します
*/
関数todbc(str){
var result = "";
var len = str.length;
for(var i = 0; i <len; i ++)
{
var ccode = str.charcodeat(i);
//フルアングルとハーフアングルの違い(スペースを除く):65248(小数)
ccode =(ccode> = 0x0021 && ccode <= 0x007e)?(ccode + 65248):ccode;
//スペースの処理
ccode =(ccode == 0x0020)?0x03000:ccode;
result += string.fromCharcode(ccode);
}
返品結果;
}
/**
*半幅の文字を回します
*/
関数TOSBC(STR){
var result = "";
var len = str.length;
for(var i = 0; i <len; i ++)
{
var ccode = str.charcodeat(i);
//フルアングルとハーフアングルの違い(スペースを除く):65248(小数)
ccode =(ccode> = 0xff01 && ccode <= 0xff5e)?(ccode -65248):ccode;
//スペースの処理
ccode =(ccode == 0x03000)?0x0020:ccode;
result += string.fromCharcode(ccode);
}
返品結果;
}
知識ポイント
半幅の文字を完全な幅の文字(ASCII文字)と比較することにより、ASCII文字範囲が完全幅と半幅の文字を持つ範囲は0x20〜0x7eであることがわかります。
例えば:
半幅のシンボルと全幅シンボルの違い
#0x00230xff030xfee0
?0x003f0xff1f0xfee0
スペース0x00200x030000x2fe0
スペースを除いて、他の文字では、全体と半幅が異なります:0xffe0
したがって、全幅と半幅のキャラクター変換では、スペースの特別な処理が必要です。
例えば:
全幅=半幅 + 0xfee0
半幅=フル幅-0xffe0