Javascript判断日文全角半角长度
2016-06-08 08:56
1081 查看
今天遇到需要判断在输入框中输入全角与半角的文字个数,例如全角可以输入10个,而半角可以输入20个。在网上搜寻了下,有篇文章是关于JavaScript,重点在于将字符串转换成unicode编码,而AS和Javascript有现成的charCodeAt()函数。 并不是所有的0-255之间的Unicode都是1个字节长的!!而且,日文的假名有半角的形式(Unicode是65377-65439,其中 65381除外)!!,并不是只有这些是半角的,还有很多字符也是半角的!!所以说,仅仅靠判断是不是在0-255里面是不行的。
考虑到Unicode包括了所有国家的各种字符,而且这些字符又是全角半角交杂的,所以,不会有一个完美的JS方法来进行半角字符的校验。但是因为一般别 的字符也用不上,以后做的多是对日项目,所以还是沿用0-255的方法,然后抠掉一些全角的,再加上对半角日文的校验,写成以下一个方法,供研究使用:
感谢作者分享!
考虑到Unicode包括了所有国家的各种字符,而且这些字符又是全角半角交杂的,所以,不会有一个完美的JS方法来进行半角字符的校验。但是因为一般别 的字符也用不上,以后做的多是对日项目,所以还是沿用0-255的方法,然后抠掉一些全角的,再加上对半角日文的校验,写成以下一个方法,供研究使用:
function calcUTFByte(str) { var len=0; for (var i=0;i<str.length;i++) { var temp = str.charCodeAt(i); if ( temp >= 0 && temp <= 254) { //以下是0-255之内为全角的字符 if ( temp == 162 || temp == 163 || temp == 167 || temp == 168 || temp == 171 || temp == 172 || temp == 175 || temp == 176 || temp == 177 || temp == 180 || temp == 181 || temp == 182 || temp == 183 || temp == 184 || temp == 187 || temp == 215 || temp == 247) { len+=2; } len++; } else if ( temp >= 65377 && temp <= 65439) { if ( temp == 65381 ) { len+=2; } len++; } else { len+=2; } }//for end return len; }本文转自:http://blog.csdn.net/dante_k7/article/details/6553473
感谢作者分享!
相关文章推荐
- Javascript中switch case的一个细节
- js 中使用el表达式 关键总结:在js中使用el表达式一定要使用双引号
- 针对js中li标签的获取
- javascript编写方式及基本类型,引用类型
- js(javascript)小谈变量声明(显隐声明,声明提前)
- 淘宝手机屏幕尺寸判断改变字体大小的js:
- Json.net 常用使用小结(推荐)
- 遍历json对象的属性和值,并循环动态定义声明变量
- javascript div跟随鼠标移动
- javascript点击之后使元素e左右震动
- javascript 模块点击抖动之后变为透明
- UnderscoreJS
- javascript中内存泄露问题的解决方案
- js 迷你库
- JavaScript-Tips
- 基于xterm.js的webssh实现
- 当向后台插入或读取JSON数据遇见回车时
- JS通过navigator.userAgent的返回值认识众浏览器
- 利用js的prototype属性给数组去重
- WEB编程的套路——简单好用的js函数(1)