JavaScript 全半形轉換

來源:互聯網
上載者:User

規律:半形空格的 charCode 為 32, 全形空格為 12288. 其他半形字元 ( 33 – 126 ) 與全形 ( 65281 – 65374 ) 的對應關係是:均相差 65248.

找好規律,代碼就好寫了:

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('');}

同理:

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('');}

上面的代碼會將 33 - 126 中間的符號也轉換。很多時候,這並不是我們需要的(比如將 @ 轉換為 @)。下面的代碼侵入性更小:

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('');}

詳細測試頁面:sbc2dbc-test.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.