我正在尝试遍历Javascript字符串中的Unicode字符,我假设它是用UTF-16编码的。

据我了解,UTF-16是可变宽度的。也就是说,单个Unicode字符可以分为多个16位字符。我可以使用s[i].codePointAt从给定的代码点开始获取Unicode字符。但是一旦有了,我怎么知道我要前进多远?

大概,这里的getWidth是什么?仅仅是c > Math.pow(2, 16)吗?

for (var i = 0; i < s.length;) {
    var c = s.codePointAt(i);
    // do some operation with c
    i = i + getWidth(c)
}

我可以使用标准的库函数来确定前进的距离吗?还是一种遍历字符串中的Unicode代码点的方法?

最佳答案



是的,从ES6开始,您可以简单地iterate所有字符串来获取代码点:

for (const character of string) {
    const codepoint = character.codePointAt(0);
    // do some operation with codepoint
}

关于javascript - 如何确定codePointAt结果的宽度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45475216/

10-11 13:25