繁体   English   中英

如何使用带有特殊 unicode 字符的 substring ?

[英]How to use substring with special unicode characters?

 var string = "abc"; var lastchar = string.substr(string.length - 1); console.log(lastchar);

这回归? 代替

在 JavaScript 中,字符串是一系列 UTF-16 代码单元(详情见我的博文What is a string? )。 在 UTF-16 中,最后一个字形(松散地称为“字符”)需要两个代码单元(它们组合成一个代码),因此您的字符串长度为 5。

在 ES2015 之前,JavaScript 中并没有多少内置功能可以帮助您解决这个问题,但是当引入可迭代性时,字符串是可迭代的,它们会迭代它们的代码点,而不是代码单元。 传播操作使用迭代,因此您可以将该字符串传播到一个数组中以获取其代码点:

 const string = "abc"; console.log(string.length); // 5 const chars = [...string]; console.log(chars.length); // 4 const lastchar = chars.slice(chars.length - 1).join(""); console.log(lastchar);

这只是演示区别以及如何相当轻松地使用代码点的示例。

甚至代码点也不一定是字形,因为一些代码点与其他代码点结合形成一个字形。 (例如,在梵文中,该语言的单词是“देवनागरी”,对于本地读者来说,它看起来像五个字形,但实际上是八个代码点,因为其中一些是用一个由元音代码点修改的基本音节字形编写的。)有一个新的Intl.Segmenter正在开发中,它也可以帮助解决这些情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM