Règle : Le charCode d'un espace demi-chasse est 32 et le charCode d'un espace pleine chasse est 12288. La relation correspondante entre les autres caractères demi-chasse (33 – 126) et les caractères pleine chasse (65281 – 65374) est : la différence est de 65248.
Une fois que vous aurez trouvé les règles, le code sera facile à écrire :
var hachage = {'32' : 'u3000'};
// de la demi-largeur à la pleine largeur
fonction sbc2dbc(str) {
var ret = [], i = 0, len = str.length, code, chr;
pour (; je < len; ++i) {
code = str.charCodeAt(i);
chr = hachage[code];
si (!chr && code > 31 && code < 127) {
chr = hash[code] = String.fromCharCode(code + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
return ret.join('');
}
Même raison :
var hachage = {'12288' : ' '};
// Pleine largeur à demi-largeur
fonction dbc2sbc(str) {
var ret = [], i = 0, len = str.length, code, chr;
pour (; je < len; ++i) {
code = str.charCodeAt(i);
chr = hachage[code];
si (!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/
Le code ci-dessus convertira également les symboles compris entre 33 et 126. Souvent, ce n’est pas ce dont nous avons besoin (comme convertir @ en @). Le code suivant est moins intrusif :
var hachage = {};
// Convertit la demi-largeur en pleine largeur. Convertir uniquement [0-9a-zA-Z]
fonction sbc2dbc_w(str) {
var ret = [], i = 0, len = str.length, code, chr;
pour (; je < len; ++i) {
code = str.charCodeAt(i);
chr = hachage[code];
si (!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('');
}
-