Regel: Der charCode eines Leerzeichens halber Breite ist 32 und der charCode eines Leerzeichens voller Breite ist 12288. Die entsprechende Beziehung zwischen anderen Zeichen halber Breite (33 – 126) und Zeichen voller Breite (65281 – 65374) ist : Die Differenz beträgt 65248.
Sobald Sie die Regeln gefunden haben, wird der Code einfach zu schreiben sein:
var hash = {'32' : 'u3000'};
// Halbe Breite bis volle Breite
Funktion sbc2dbc(str) {
var ret = [], i = 0, len = str.length, code, chr;
for (; i < len; ++i) {
code = str.charCodeAt(i);
chr = Hash[Code];
if (!chr && code > 31 && code < 127) {
chr = hash[code] = String.fromCharCode(code + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}
Gleicher Grund:
var hash = {'12288' : ' '};
// Volle Breite bis halbe Breite
Funktion dbc2sbc(str) {
var ret = [], i = 0, len = str.length, code, chr;
for (; i < len; ++i) {
code = str.charCodeAt(i);
chr = Hash[Code];
if (!chr && Code > 65280 && Code < 65375) {
chr = hash[code] = String.fromCharCode(code - 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}http://qqface.knowsky.com/
Der obige Code konvertiert auch die Symbole im Bereich 33–126. Oft ist dies nicht das, was wir brauchen (z. B. die Konvertierung von @ in @). Der folgende Code ist weniger aufdringlich:
var hash = {};
// Halbe Breite in volle Breite umwandeln. Konvertieren Sie nur [0-9a-zA-Z]
Funktion sbc2dbc_w(str) {
var ret = [], i = 0, len = str.length, code, chr;
for (; i < len; ++i) {
code = str.charCodeAt(i);
chr = Hash[Code];
if (!chr &&
(47 < Code && Code < 58 ||
64 < Code && Code < 91 ||
96 < Code && Code < 123)) {
chr = hash[code] = String.fromCharCode(code + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}
-