length可能不正确,因为‘‘

本文介绍了一种使用ES6正则表达式的u修饰符来准确计算包含Unicode字符的JavaScript字符串长度的方法。此方法能够正确处理四字节的Unicode字符,确保长度计算的准确性。

Unicode字符

js对Unicode字符的支持是采用\uxxxx形式表示的,其中xxxx表示字符的Unicode码点,但是这样的表示方法只能表示\u0000-\uFFFF之间的字符,超出这个范围的字符,必须采用四字节的形式表示。但是这样以来导致 '𠮷'.lenth=2
例如:

	'\ud842\udfb7'==='𠮷' // true
	'𠮷'.length===2 // true

因此我们需要一个精准匹配字符串的lenth的方法返回字符传的串的个数的函数,
此时我们可以利用es6对正则表达是提供的u修饰符,在用match方法匹配到字符之后,获取返回的数组的长度即为字符串的真实长度
代码

	if(!String.prototype.customPointLength){
		String.prototype.customPointLength=function(){
			const text=this.toString()
			const result=text.match(/[\s\S]/gu)
			return result?result.length:0
		}
		
	}
	// test 
	const s='𠮷'
	s.customPointLength() // 1 

nice ! 这样就可以返回字符串的真实长度见到一些双子节形式表达的生僻字或者符号也不算问题了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值