加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

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

发布时间:2023-09-23 14:58:29 所属栏目:教程 来源:
导读:有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度。

用的是正则表达式。

代码如下:

var str = ”坦克是tank的音译”;

var len = str.match(/[^ -~]/g) =
有同事在公司的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;
 
}
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章