javascript实现全角与半角字符的转换


Posted in Javascript onJanuary 07, 2015

先上代码,再说废话^_^

/**

 * 转全角字符

 */

function toDBC(str){

    var result = "";

    var len = str.length;

    for(var i=0;i<len;i++)

    {

        var cCode = str.charCodeAt(i);

        //全角与半角相差(除空格外):65248(十进制)

        cCode = (cCode>=0x0021 && cCode<=0x007E)?(cCode + 65248) : cCode;

        //处理空格

        cCode = (cCode==0x0020)?0x03000:cCode;

        result += String.fromCharCode(cCode);

    }

    return result;

}

/**

 * 转半角字符

 */

function toSBC(str){

    var result = "";

    var len = str.length;

    for(var i=0;i<len;i++)

    {

        var cCode = str.charCodeAt(i);

        //全角与半角相差(除空格外):65248(十进制)

        cCode = (cCode>=0xFF01 && cCode<=0xFF5E)?(cCode - 65248) : cCode;

        //处理空格

        cCode = (cCode==0x03000)?0x0020:cCode;

        result += String.fromCharCode(cCode);

    }

    return result;

}

知识点

通过半角字符与全角字符的比较(ASCII字符),我们可以发现,拥有全角与半角之分的ASCII字符范围:0x20~0x7E。

比如:

符号 半角 全角 相差
# 0x0023 0xFF03 0xFEE0
? 0x003F 0xFF1F 0xFEE0
空格 0x0020 0x03000 0x2FE0

除了空格外,其他的字符中,全角与半角均相差:0xFFE0

因此,在全角与半角的字符转换中,需要对空格特殊处理。

例如:

全角 = 半角 + 0xFEE0

半角 = 全角  - 0xFFE0

Javascript 相关文章推荐
JavaScript 直接操作本地文件的实现代码
Dec 01 Javascript
JS+CSS实现Li列表隔行换色效果的方法
Feb 16 Javascript
解析javascript中鼠标滚轮事件
May 26 Javascript
Jquery和Js获得元素标签名称的方法总结
Oct 08 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
Layui tree 下拉菜单树的实例代码
Sep 21 Javascript
bootstrap-table后端分页功能完整实例
Jun 01 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 Javascript
如何利用js在两个html窗口间通信
Apr 27 Javascript
自己封装的常用javascript函数分享
Jan 07 #Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
Jan 07 #Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 #Javascript
jQuery中children()方法用法实例
Jan 07 #Javascript
angular.element方法汇总
Jan 07 #Javascript
jQuery中slice()方法用法实例
Jan 07 #Javascript
angularJS中$apply()方法详解
Jan 07 #Javascript
You might like
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
PHP多例模式介绍
2013/06/24 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
jquery 插件学习(二)
2012/08/06 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
vue 组件简介
2020/07/31 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
批处理与python代码混合编程的方法
2016/05/19 Python
详解python的argpare和click模块小结
2019/03/31 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
优秀教师工作总结2015
2015/07/22 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL