JavaScript 全半角转换

作者:lifesinger 来源:蓝色理想 时间:2010-02-04 17:14:00 

规律:半角空格的 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  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  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

标签:全角,半角,转换,JavaScript,字符
0
投稿

猜你喜欢

  • ASP Cookies操作的详细介绍与实例代码

    2011-03-10 10:53:00
  • CSS经验:因为编码差异 导致IE6不能正常解析CSS文件

    2010-06-06 13:55:00
  • 有关于IE8 Beta 1两个提醒

    2008-05-15 12:32:00
  • asp如何将统计的访问者数目周期性地保存?

    2009-11-26 20:54:00
  • UTF-8转为GB2312编码的asp函数

    2007-08-23 13:42:00
  • Linux PHP连接MSSQL

    2011-06-02 12:01:00
  • PL/SQL编程经验小结开发者网络Oracle

    2010-07-18 13:27:00
  • css闭合浮动元素

    2008-05-09 19:41:00
  • ASP+Access系统的安全隐患及对策

    2007-08-23 14:53:00
  • link 和 style 元素在 HTML 文档中的位置

    2008-06-02 13:56:00
  • mysql 修改表结构 判断并添加column

    2010-10-25 20:07:00
  • YUI学习笔记(1)

    2009-01-12 18:06:00
  • 在JScript中使用ADODB.Stream判断文件编码

    2008-06-08 13:03:00
  • 比较SQL Server与Oracle、DB2三种数据库

    2008-09-12 17:24:00
  • 灵活调用xsl来解析xml文档(js异步)

    2008-09-05 17:12:00
  • asp之自动闭合HTML/ubb标签函数 附简单注释

    2011-02-28 11:24:00
  • aspjpeg组件asp代码实例使用详解

    2008-12-14 10:33:00
  • oracle 常用的几个SQL

    2009-12-01 12:36:00
  • 视觉设计常见误解

    2008-11-13 13:09:00
  • ORACLE 分区表的设计

    2009-08-15 10:56:00
  • asp之家 网络编程 m.aspxhome.com