使用 String.offsetByCodePoints 而不是仅使用整数索引来跟踪字符串中的位置有什么优势吗?
最佳答案
如果字符串包含来自 Unicode 补充平面的字符(具有高代码点/字符代码的不寻常字符),这可能会很有用。 Java 字符串内部使用 UTF-16 编码,这意味着某些 Unicode 字符必须表示为两个 char
值的序列,也称为代理对。因此,虽然 s.charAt(i)
将为您提供 s
的第 i 个 char
,但这可能实际上并不是第i个角色。 s.offsetByCodePoints(0, i)
将告诉您第 i 个字符开始的索引。
如果您不熟悉上述某些术语,您应该阅读Joel Spolsky's excellent article on character sets .
关于java - offsetByCodePoints 与整数迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592192/