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中的var_dump函数实现代码
Sep 07 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
使用node+vue.js实现SPA应用
Jan 28 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
防止重复发送 Ajax 请求
Feb 15 Javascript
详解Vue中过度动画效果应用
May 25 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
jQuery EasyUI开发技巧总结
Sep 26 jQuery
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
ES6中字符串的使用方法扩展
Jun 04 Javascript
解决elementui表格操作列自适应列宽
Dec 28 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 和 MySQL 时区的一点总结
2008/03/26 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
javascript jQuery插件练习
2008/12/24 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
理解Python中函数的参数
2015/04/27 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python中print函数简单使用总结
2019/08/05 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
三方股东合作协议书
2014/10/28 职场文书
教师节寄语2015
2015/03/23 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript
css3应用示例:新增的选择器
2022/03/16 HTML / CSS