규칙: 반각 공백의 charCode는 32이고, 전각 공백의 charCode는 12288입니다. 다른 반각 문자(33 – 126)와 전각 문자(65281 – 65374) 간의 대응 관계는 다음과 같습니다. : 차이는 65248입니다.
규칙을 찾으면 코드를 쉽게 작성할 수 있습니다.
var hash = {'32' : 'u3000'};
// 반폭에서 전폭으로
함수 sbc2dbc(str) {
var ret = [], i = 0, len = str.length, 코드, chr;
for (; i < len; ++i) {
코드 = str.charCodeAt(i);
chr = 해시[코드];
if (!chr && 코드 > 31 && 코드 < 127) {
chr = hash[코드] = String.fromCharCode(코드 + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
ret.join('')을 반환합니다.
}
같은 이유:
var hash = {'12288' : ' '};
// 전폭에서 반폭으로
함수 dbc2sbc(str) {
var ret = [], i = 0, len = str.length, 코드, chr;
for (; i < len; ++i) {
코드 = str.charCodeAt(i);
chr = 해시[코드];
if (!chr && 코드 > 65280 && 코드 < 65375) {
chr = hash[코드] = String.fromCharCode(코드 - 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
ret.join('')을 반환합니다.
}http://qqface.knowsky.com/
위 코드는 33 - 126 범위의 기호도 변환합니다. 많은 경우 이는 우리에게 필요한 것이 아닙니다(예: @를 @로 변환). 다음 코드는 덜 방해적입니다.
var 해시 = {};
// 반각을 전각으로 변환합니다. [0-9a-zA-Z]만 변환
함수 sbc2dbc_w(str) {
var ret = [], i = 0, len = str.length, 코드, chr;
for (; i < len; ++i) {
코드 = str.charCodeAt(i);
chr = 해시[코드];
if (!chr &&
(47 < 코드 && 코드 < 58 ||
64 < 코드 && 코드 < 91 ||
96 < 코드 && 코드 < 123)) {
chr = hash[코드] = String.fromCharCode(코드 + 65248);
}
ret[i] = chr ? chr : str.charAt(i);
}
ret.join('')을 반환합니다.
}
-