1

使用 String.offsetByCodePoints 而不是仅使用整数索引来跟踪您在字符串中的位置有什么好处吗?

4

1 回答 1

2

如果字符串包含来自 Unicode 补充平面的字符(具有高代码点/字符代码的不寻常字符),它可能会很有用。Java 字符串在内部使用 UTF-16 编码,这意味着某些 Unicode 字符必须表示为两个char值的序列,也称为代理对。因此,虽然s.charAt(i)会给你第ichars但这实际上可能不是第i字符会告诉你第i个字符开始s.offsetByCodePoints(0, i)的索引。

如果你不熟悉上面的一些术语,你应该阅读Joel Spolsky 关于字符集的优秀文章

于 2013-01-29T21:11:30.253 回答