JS验证全角与半角及相互转化的介绍


Posted in Javascript onMay 18, 2017

1.什么是全角和半角?

全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置。全角占两个字节。

汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。在全角中,字母和数字等与汉字一样占据着等宽的位置。

半角:是指一个字符占用一个标准的字符位置。半角占一个字节。

半角就是 ASCII 方式的字符,在没有汉字输入法起作用的时候,输入的字母、数字和字符都是半角的。

每个半角字符只占用一字节的空间(一字节有8位,共256个编码空间)。汉语、日语、及朝鲜文等象形字语言的字库量远大于256个编码空间,所以改用两个字节来储存。同时,由于中日韩等象形文字的书写习惯,如果统一使用全角字符的话,排列起来也显得整齐。

为了排列整齐,英文和其它拉丁文的字符和标点也提供了全角格式。

2.全角和半角的区别

全角和半角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节。不管是半角还是全角,汉字都要占两个字节。

3.js判断输入的文字是全角还是半角?

str="中文;;a"   
alert(str.match(/[\u0000-\u00ff]/g))   //半角  
alert(str.match(/[\u4e00-\u9fa5]/g))   //中文  
alert(str.match(/[\uff00-\uffff]/g))   //全角

4.js对全角与半角的相互转化

首先,先得明确以下信息:

a.全角空格为12288,半角空格为32

b.其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248

半角转化为全角

function ToDBC(txtstring) { 
  var tmp = ""; 
  for(var i=0;i<txtstring.length;i++{ 
    if(txtstring.charCodeAt(i)==32){ 
      tmp= tmp+ String.fromCharCode(12288); 
    } 
    if(txtstring.charCodeAt(i)<127){ 
      tmp=tmp+String.fromCharCode(txtstring.charCodeAt(i)+65248); 
    } 
  } 
  return tmp; 
}

上面用到了js的charCodeAt() 方法与fromCharCode() 方法。

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。

想详细的了解charCodeAt() 方法与fromCharCode()方法,可以点击《JavaScript charCodeAt() 方法》与《JavaScript fromCharCode() 方法》。

全角转换为半角

function ToCDB(str) { 
  var tmp = ""; 
  for(var i=0;i<str.length;i++){ 
    if (str.charCodeAt(i) == 12288){
      tmp += String.fromCharCode(str.charCodeAt(i)-12256);
      continue;
    }
    if(str.charCodeAt(i) > 65280 && str.charCodeAt(i) < 65375){ 
      tmp += String.fromCharCode(str.charCodeAt(i)-65248); 
    } 
    else{ 
      tmp += String.fromCharCode(str.charCodeAt(i)); 
    } 
  } 
  return tmp 
}

以上所述是小编给大家介绍的JS验证全角与半角及相互转化的知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
greybox——不开新窗口看新的网页
Feb 20 Javascript
javascript面向对象入门基础详细介绍
Sep 05 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
js显示文本框提示文字的方法
May 07 Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 Javascript
animate 实现滑动切换效果【实例代码】
May 05 Javascript
canvas知识总结
Jan 25 Javascript
JS实现二维数组元素的排列组合运算简单示例
Jan 28 Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 Javascript
vue实现信息管理系统
May 30 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 #Javascript
Javascript实现倒计时时差效果
May 18 #Javascript
vue-cli webpack 开发环境跨域详解
May 18 #Javascript
JavaScript实现简单的星星评分效果
May 18 #Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 #Javascript
Javascript实现信息滚动效果
May 18 #Javascript
详解Vue-cli 创建的项目如何跨域请求
May 18 #Javascript
You might like
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
一个js控制的导航菜单实例代码
2013/12/03 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
法律专业学生的自我评价
2014/02/07 职场文书
初中班主任寄语
2014/04/04 职场文书
初中班主任评语
2014/04/24 职场文书
五四青年节演讲稿
2014/05/26 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
清洁工个人工作总结
2015/03/05 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis