您现在的位置:首页 --> JavaScript --> JavaScript 全半角转换
JavaScript 全半角转换
浏览:2278次 出处信息
规律:半角空格的 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
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:JavaScript 屏蔽右键
后一篇:jQuery边框圆角插件:DivCorners >>
文章信息
- 作者:lifesinger 来源: 岁月如歌
- 标签: 全角 半角 转换
- 发布时间:2010-03-02 13:46:45
近3天十大热文
-
[895] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[56] 整理了一份招PHP高级工程师的面试题 -
[54] Innodb分表太多或者表分区太多,会导致内 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[53] 用 Jquery 模拟 select -
[52] 海量小文件存储 -
[52] CloudSMS:免费匿名的云短信 -
[52] 全站换域名时利用nginx和javascri -
[52] 分享一个JQUERY颜色选择插件
