JavaScript中如何正确的获取字符串长度

本文介绍了在处理包含中文和英文的字符串时,如何准确计算字符串的长度。传统的JavaScript `length`属性无法正确处理中文字符,因为它将每个中文字符视为一个单位。文中提供了一个简单的解决方案,通过使用正则表达式将中文字符替换为双字符的英文字符串,然后计算长度,从而得到准确的字符数。这种方法对于需要精确计算字符串长度的场景非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中或多或少会去判断字符串的长度是多少;但是字符串其中的内容可能不是我们确定的;他有可能是中文,也有可能是英文或者数字;那么我们怎么计算才能得到真实的字符串长度呢?

先给大家展示一串字符串:

注意:str目前有16个中文汉字;我们都知道一个中文表示两个字符,也就是该字符串有32个字符;

let str = '你认为的长度和我认为的长度一直嘛';
console.log(str.length); // 16

现在我将这个字符串增加123:

注意:现在我们看到的结果是19;如果我们在其*2的话;那就是38;但是这个字符串所占字符是35个;那他就多了3个;所以这种方式是不正确的(英文也是同理占一个字符)

let str = '你认为的长度和我认为的长度一直嘛123'
console.log(str.length); // 19

参考了网上很多方法只有一个最简单:

注意:方法那么多,干嘛不选一个最简单适用的呢?都是复制粘贴,要什么自行车;一下这串代码就是将中文替换为英文,然后进行计算长度;是不是贼简单方便

replace(/[\u0391-\uFFE5]/g,"aa").length

注意:实战中使用,我们可以看到现在我们的字符长度就是35了;方便

let str = '你认为的长度和我认为的长度一直嘛123'
console.log(str.length); // 19
console.log(str.toString().replace(/[\u0391-\uFFE5]/g,"aa").length); // 35

授人以鱼不如授人以渔,方法贴这儿了;自取呦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值