JavaScript如何取得字符串的真实字符数?大疑问

最近学习JavaScript的String类型、UTF-16、String.length属性后,知道字符串的length属性会返回“16bits”码元的个数,如果字符串中存在32bits码位(2个码元表示1个字符)的字符,那么length就不能正确的反映字符串中的字符数量。

疑问:应该如何去计算得到真实的字符数?
假设有目标字符串 strText = "....." // 内容省略

目前我还写不出来代码(js函数没学),但我看过了 codeCharAt()和 codePointAt()函数后,感觉可以用 codePointAt()来取得目标字符串 strText中指定索引字符的

但这时候会存在一个问题:
strText的字面量形式可能会对结果有影响吧。
因为所有的unicode字符都可以通过 unnnn的形式来书写。比如字符串"string" 可以写作 "u0073u0074u0072u0069u006eu0067"。
换句话说,当采用 unnnn的形式时,会不会造成codeCharAt()依次对 , u , 0 进行处理。。。

同时,还有一个问题,我在上网查资料的时候,发现了这两篇文章:
JS获取字符串实际长度!
String length中文字符长度
这两篇文章干的活我没看明白, 汉字的unicode范围是:0x4E00~0x9FA5,处于BMP(基本多语言平面)内,因此汉字只用一个最小单位即可表示。而这两篇文章是希望把汉字的长度弄成2,这有意义吗?我真没搞懂他们在干嘛,求指教,谢谢!


海绵宝宝撒
浏览 354回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript