使用 String.offsetByCodePoints 而不是仅使用整数索引来跟踪您在字符串中的位置有什么好处吗?
问问题
136 次
1 回答
2
如果字符串包含来自 Unicode 补充平面的字符(具有高代码点/字符代码的不寻常字符),它可能会很有用。Java 字符串在内部使用 UTF-16 编码,这意味着某些 Unicode 字符必须表示为两个char
值的序列,也称为代理对。因此,虽然s.charAt(i)
会给你第i个char
,s
但这实际上可能不是第i个字符。会告诉你第i个字符开始s.offsetByCodePoints(0, i)
的索引。
如果你不熟悉上面的一些术语,你应该阅读Joel Spolsky 关于字符集的优秀文章。
于 2013-01-29T21:11:30.253 回答