转自:http://sunxboy.iteye.com/blog/131684
关键字: javascript/截取
摘要:我们在用程序处理文本的过程中,经常碰到中英文 字符串的问题,比如说我们要得到文本编辑器中一段中英文 混合文字的长度 从而进行数据验证,有的时候我们为了实现某些特殊的效果需要对文字进行截取,这时候我们就用到了中英文 混合文字的截取问题
我们分两步来看一下这个问题
x00-\xff 代表非汉字编码
一个汉字代表两个字节,所以那样了,不过应该是
return this.replace(/[^\0xa1-\0xff]/g,"**").length;
运行示例程序会弹出一个对话框显示13
用法: var a = "gdfghrtfhrjtyjtukyukyk";a.sub(10);
上面的程序不难理解 这里不作解释了
我们分两步来看一下这个问题
js 中英文 字符串长度
因为一个中文字符=两个英文字符的长度 ,所以我们采用一个办法将一个汉字字符转化为两个字节的英文字符 实现代码如下
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
既然有了长度 的判断 那么我们再来看一下中英文 字符串截取的问题:
看下面一段程序:
js 代码
- 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 ;
- };
上面的程序不难理解 这里不作解释了