您现在的位置: 万盛学电脑网 >> 程序编程 >> 脚本专题 >> javascript >> 正文

在javascript中如何得到中英文混合字符串的长度

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 本文为大家介绍下Javascript中如何得到中英文混合字符串的长度,下面有个不错的教程,感兴趣的朋友可以参考下

有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度。    用的是正则表达式。     代码如下: var str = ”坦克是tank的音译”;  var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ;    我查了一下书,有点明白了:    西文常用字符集由空格“ ”(0x20)到“~”(0x7e)构成,汉字会落在这个字符集外,而正则表达式[^ -~]表示除空格到“~”外的字符集。   代码如下: string.match(regex) 会以数组形式返回字符串string中匹配正则表达式regex的子串,所以,  str.match(/[^ -~]/g)会以数组的形式返回一个个汉字。例如  var str = "dd大哥";  //显示"大,哥",数组中返回两个汉字,数组长度为2  alert(str.match(/[^ -~]/g));    这样,var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ;就可以得到str的正确长度了。    在javascript中,一个汉字的长度也被计算为1,常常在提交到数据库中造成长度超标的错误,现在用这个方法,可以在提交前先检测一番了。    注:以上代码有些符号有问题,经修正后,改为如下函数。  代码如下: function get_strlength (str)  {  var len = 0;    if (str.match(/[^ -~]/g) == null)  {  len = str.length;  }  else  {  len = str.length + str.match(/[^ -~]/g).length;  }    return len;  }