JavaScript 全半角转换

规律:半角空格的 charCode 为 32, 全角空格为 12288. 其他半角字符 ( 33 – 126 ) 与全角 ( 65281 – 65374 ) 的对应关系是:均相差 65248.

找好规律,代码就好写了:
JavaScript复制代码
  1. var hash = {'32' : '\u3000'};   
  2. // 半角转全角   
  3. function sbc2dbc(str) {   
  4.     var ret = [], i = 0, len = str.length, code, chr;   
  5.     for (; i < len; ++i) {   
  6.         code = str.charCodeAt(i);   
  7.         chr = hash[code];   
  8.         if (!chr && code > 31 && code < 127) {   
  9.             chr = hash[code] = String.fromCharCode(code + 65248);   
  10.         }   
  11.         ret[i] = chr ? chr : str.charAt(i);   
  12.     }   
  13.     return ret.join('');   
  14. }   
同理:
JavaScript复制代码
  1. var hash = {'12288' : ' '};   
  2. // 全角转半角   
  3. function dbc2sbc(str) {   
  4.     var ret = [], i = 0, len = str.length, code, chr;   
  5.     for (; i < len; ++i) {   
  6.         code = str.charCodeAt(i);   
  7.         chr = hash[code];   
  8.         if (!chr && code > 65280 && code < 65375) {   
  9.             chr = hash[code] = String.fromCharCode(code - 65248);   
  10.         }   
  11.         ret[i] = chr ? chr : str.charAt(i);   
  12.     }   
  13.     return ret.join('');   
  14. }  
       上面的代码会将 33 - 126 中间的符号也转换。很多时候,这并不是我们需要的(比如将 @ 转换为 @)。下面的代码侵入性更小:
JavaScript复制代码
  1. var hash = {};   
  2. // 半角转全角。仅转换 [0-9a-zA-Z]   
  3. function sbc2dbc_w(str) {   
  4.     var ret = [], i = 0, len = str.length, code, chr;   
  5.     for (; i < len; ++i) {   
  6.         code = str.charCodeAt(i);   
  7.         chr = hash[code];   
  8.         if (!chr &&   
  9.             (47 < code && code < 58 ||   
  10.              64 < code && code < 91 ||   
  11.              96 < code && code < 123)) {   
  12.             chr = hash[code] = String.fromCharCode(code + 65248);   
  13.         }   
  14.         ret[i] = chr ? chr : str.charAt(i);   
  15.     }   
  16.     return ret.join('');   
  17. }   


上一篇:jquery点击行单元格一个A元素赋值到同行的一个input

下一篇:给麦包包独立商城的一些建议

留下脚印压缩包密码:sosuo8
名字:
全部评论:
申明:本站部分文章来自网络,由于各种原因对文章的来源无从考究,如果您是“ JavaScript 全半角转换 ”的原作者,若侵犯您的版权,请与我联系!在此请您原谅我的幼稚和无知!联系方法:email:ahuinan@21cn.com  QQ:106494262

感谢以下网友对网站提出的建议:
1、感谢“蓝树叶kiss”网友发现一个评论漏洞。(2009-2-28)
2、感谢“陈臣”对程序优化和seo方面的建议。(2009-3-18)
文章档案
  • 作者:lifesinger
  • 来源:lifesinger's blog
  • 日期:2010-2-5 12:43:00
  • 点击:258
网友投票(您觉得这篇文章怎样?)
loadding...请稍侯......