java - offsetByCodePoints 与整数迭代器

标签 java string

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

最佳答案

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

如果您不熟悉上述某些术语,您应该阅读Joel Spolsky's excellent article on character sets .

关于java - offsetByCodePoints 与整数迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592192/

相关文章:

c++ - 读取/写入 outfile 错误(可能是简单的修复)

python - 从文件中删除单词

python - 提取文本文件的下一行

JAVA_HOME 和 PATH 已设置,但 java -version 仍显示旧版本

java - java随机字符串数组

java - Class<T> 怎么可能是通用的?

java - 将单词放入字符串数组中

C++ - include <string> 错误

java - 对于给定的内存大小,单个进程允许使用的最大堆内存?

java - 网址java.io.IOException : Server returned HTTP response code: 411 in JAVA