我们分两步来看一下这个问题
js中英文字符串长度
因为一个中文字符=两个英文字符的长度,所以我们采用一个办法将一个汉字字符转化为两个字节的英文字符 实现代码如下
- <script>
- String.prototype.len=function()
- {
- return this.replace(/[^\x00-\xff]/g,"rr").length;
- }
- var str="bdkey的字符串";
- alert(str.len()); //5+8=13
- </script>
一个汉字代表两个字节,所以那样了,不过应该是
return this.replace(/[^\0xa1-\0xff]/g,"**").length;
运行示例程序会弹出一个对话框显示13
既然有了长度的判断 那么我们再来看一下中英文字符串截取的问题:
看下面一段程序:
- String.prototype.sub = function(n) {
- var r = /[^\x00-\xff]/g;
- if(this.replace(r, "mm").length <= n) return this;
- // n = n - 3;
- var m = Math.floor(n/2);
- for(var i=m; i<this.length; i++) {
- if(this.substr(0, i).replace(r, "mm").length>=n) {
- return this.substr(0, i) +"..."; }
- } return this;
- };