中英文混合长度的计算以及截取
2015-09-06 15:18
411 查看
A.计算中文以及英文混合字符串的长度
1.中文算2个字符2.英文算一个字符
代码
<script type="text/javascript">
window.onload = function(){
function getByteLen(val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null){
len += 2;
}else{
len += 1;
}
}
return len;
}
alert(getByteLen('中国2ds'));
}
</script>
知识详解:
xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, '\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。
[^\x00-\xff]即ASCII 编码不在0-255的字符
匹配双字节字符[X00-XFF],比如大写英文字母。加上^表示相反的意思,就是匹配非双字节的字符。小写字母和汉字都会被匹配出来。
[^X00-XFF]等同于[^\x00-\xff]
B.截取中英文混合的字符串
介绍:先通过正则找到中文字符,然后替换成两个英文字符,再计算长度function subString(str, len) { var newLength = 0; var newStr = ""; var chineseRegex = /[^\x00-\xff]/g; var singleChar = ""; var strLength = str.replace(chineseRegex,"**").length; for(var i = 0;i < strLength;i++) { singleChar = str.charAt(i).toString(); if(singleChar.match(chineseRegex) != null) { newLength += 2; }else { newLength++; } if(newLength > len) { break; } newStr += singleChar; } if(strLength > len) { newStr += "..."; } return newStr; } alert(subString("js字符串test截取测试",10));
这里将会输出“js字符串t...”,但是我们截取的长度是10,
相关文章推荐
- iOS开发UI -- 在storeBoard中通过标识符找到页面
- 软件系统体系结构---C/S B/S P2P架构(概述)
- STL中的所有容器资料
- 积分图像的应用(二):非局部均值去噪(NL-means)
- Android 系统栏,状态栏的隐藏
- C语言putenv()函数和getenv()函数的使用详解
- android的m、mm、mmm编译命令的使用
- wampserver安装pthreads多线程扩展教程
- redhat 2.6 版本以上的内核编译
- 非局部均值去噪(NL-means)
- Swift UIButton UIButtonType
- 计算机算法常用术语中英对照
- 1.请求服务器常见错误
- Linux字符设备驱动之Tiny6410 LED驱动分析
- app崩溃日志分析
- 需求 - 3 - 长按菜单栏
- ctf很好的很详细的一篇guide
- 欢迎使用CSDN-markdown编辑器
- Hadoop资源调度器
- PHP_Memcache函数详解