百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> Javascript获取中文字符长度与截取中文字符代码
分享文章到:

Javascript获取中文字符长度与截取中文字符代码

发布时间:01/15 来源: 浏览: 关键词:
本文章来给大家介绍在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>

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有2人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板