全半角変換
2173 ワード
半角スペースのcharCodeは32で、全角スペースは12288です.他の半角文字(33–126)と全角(65281–65374)の対応関係は、平均偏差65248です.
同じ理屈:
上のコードは33-126の中間の記号も変換されます.多くの場合、これは私達が必要としているものではありません.以下のコードの侵入性はより小さいです.
<script type="text/javascript">
var hash = {'32' : '\u3000'};
//
function 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('');
}
</script>
同じ理屈:
<script type="text/javascript">
var hash = {'12288' : ' '};
//
function 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('');
}
</script>
上のコードは33-126の中間の記号も変換されます.多くの場合、これは私達が必要としているものではありません.以下のコードの侵入性はより小さいです.
<script type="text/javascript">
var hash = {};
// , [0-9a-zA-Z]。
function 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('');
}
</script>