Javascript获取中文字符长度与截取中文字符代码
来源:自学PHP网
时间:2014-09-19 14:47 作者:
阅读:次
[导读] 本文章来给大家介绍在Javascript获取中文字符长度与截取中文字符代码,有需要了解的同学可详细参考参考。...
获取含中文的字符串长度
实际开发应用中,例如字数限制排版时,由于一个中文占有两个英文字符的位置,对含有中文的字符串长度计算用String.length不太可靠。有两种方法解决
代码如下 |
复制代码 |
String.prototype.cnLength = function() {
var arr = this.match(/[^x00-xff]/ig);
return this.length + (arr == null ? 0 : arr.length);
};
alert("hi你好".cnLength()); //测试结果 6
|
方案二:
代码如下 |
复制代码 |
String.prototype.cnLength = function() {
var len = 0;
var ch;
for (var i = 0; i < this.length; i++) {
ch = this.charCodeAt(i);
if (ch >= 0 && ch <= 255) {
len++;
}
else {
len += 2;
}
}
return len;
};
alert("hi你好".cnLength()); //测试结果 6
|
经过长度为10000+的字符串测试,方案一用时约2ms,方案二用时约12ms。方案一完胜,再次体现了正则表达式的强大之处。
截取中文字符
代码如下 |
复制代码 |
<meta http-equiv=”Content-Type” content=”text/html; charset=GBK”/>
<script type=”text/javascript”>
String.prototype.gblen = function() {
var len = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len += 2;
} else {
len ++;
}
}
return len;
}
String.prototype.gbtrim = function(len, s) {
var str = ”;
var sp = s || ”;
var len2 = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
}
if (len2 <= len) {
return this;
}
len2 = 0;
len = (len > sp.length) ? len-sp.length: len;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
if (len2 > len) {
str += sp;
break;
}
str += this.charAt(i);
}
return str;
}
var str1 = ‘世界啊啊sssl发生的发生的法’;
document.write(‘str1 = ‘+ str1 +’<br/>’);
document.write(‘length = ‘+ str1.gblen() +’<br/>’);
document.write(‘gbtrim(10) = ‘+ str1.gbtrim(10) +’<br/>’);
document.write(‘gbtrim(10, ’…’) = ‘+ str1.gbtrim(10, ‘…’) +’<br/>’);
document.write(‘gbtrim(12, ’-’ ) = ‘+ str1.gbtrim(12, ‘-’) +’<br/>’);
// gbtrim(len 截取长度,按英文字节长度计算, s截取后的省略字符,如”…” )
// 备注: 这里中文字符都是当作两个长度来计算的,所以gbtrim中的len为10时,是显示最多5个汉字的。
// 当汉字数大于5时,由于截取后加上“…”,所以只显示4个汉字。
// 注意中文编码
</script>
|
|