Aturan: charCode spasi setengah lebar adalah 32, dan charCode spasi lebar penuh adalah 12288. Hubungan yang sesuai antara karakter setengah lebar lainnya (33 – 126) dan karakter lebar penuh (65281 – 65374) adalah : selisihnya 65248.
Setelah Anda menemukan aturannya, kodenya akan mudah untuk ditulis:
var hash = {'32' : 'u3000'};
// lebar setengah hingga lebar penuh
fungsi sbc2dbc(str) {
var ret = [], i = 0, len = str.length, kode, chr;
untuk (; saya < len; ++i) {
kode = str.charCodeAt(i);
chr = hash[kode];
if (!chr && kode > 31 && kode < 127) {
chr = hash[kode] = String.fromCharCode(kode + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}
Alasan yang sama:
var hash = {'12288' : ' '};
// Lebar penuh hingga setengah lebar
fungsi dbc2sbc(str) {
var ret = [], i = 0, len = str.length, kode, chr;
untuk (; saya < len; ++i) {
kode = str.charCodeAt(i);
chr = hash[kode];
if (!chr && kode > 65280 && kode < 65375) {
chr = hash[kode] = String.fromCharCode(kode - 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}http://qqface.knowsky.com/
Kode di atas juga akan mengkonversi simbol pada rentang 33 - 126. Sering kali, hal ini tidak kita perlukan (seperti mengubah @ ke @). Kode berikut tidak terlalu mengganggu:
var hash = {};
// Ubah setengah lebar menjadi lebar penuh. Konversikan saja [0-9a-zA-Z]
fungsi sbc2dbc_w(str) {
var ret = [], i = 0, len = str.length, kode, chr;
untuk (; saya < len; ++i) {
kode = str.charCodeAt(i);
chr = hash[kode];
jika (!chr &&
(47 < kode && kode < 58 ||
64 < kode && kode < 91 ||
96 < kode && kode < 123)) {
chr = hash[kode] = String.fromCharCode(kode + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}
-