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
投稿

猜你喜欢

  • Python实现猜拳与猜数字游戏的方法详解

    2022-06-17 18:32:25
  • Python使用grequests并发发送请求的示例

    2022-11-08 15:38:01
  • python imutils包基本概念及使用

    2023-10-20 21:38:09
  • python将pandas datarame保存为txt文件的实例

    2021-11-17 06:21:51
  • python 日期排序的实例代码

    2023-12-02 16:09:35
  • mysql删除操作其实是假删除问题

    2024-01-27 23:15:50
  • DOM 精简知识教程

    2013-07-18 07:28:33
  • 详谈vue中router-link和传统a链接的区别

    2024-04-09 10:46:05
  • ASP 正则表达式常用的几种方法(execute、test、replace)

    2010-03-02 20:23:00
  • python help函数实例用法

    2022-05-03 23:29:32
  • Windows Server2008 R2 MVC 环境安装配置教程

    2024-01-17 06:45:24
  • Burpsuite模块之Burpsuite Intruder模块详解

    2023-11-24 05:31:24
  • MySQL GTID主备不一致的修复方案

    2024-01-15 21:26:16
  • MySQL时间盲注的五种延时方法实现

    2024-01-21 19:46:16
  • MySQL 逻辑备份与恢复测试的相关总结

    2024-01-19 14:19:20
  • Python实现的爬取百度贴吧图片功能完整示例

    2021-06-30 19:22:13
  • Python简单获取自身外网IP的方法

    2023-12-26 03:44:31
  • numpy数组之存取文件的实现示例

    2021-02-20 11:32:57
  • 解决springboot yml配置 logging.level 报错问题

    2021-09-21 21:38:02
  • SQL Server中关于基数估计计算预估行数的一些方法探讨

    2024-01-14 17:30:40
  • asp之家 网络编程 m.aspxhome.com