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

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

被折叠的 条评论
为什么被折叠?



