简介
迭代 Java 字符串的 Unicode 代码点需要一个唯一的方法,因为 Java 使用 UTF-16 式编码。本文探讨了不同的策略并解决了有关基本多语言平面 (BMP) 之外的字符编码的问题。
解决问题
最初,人们可能会考虑使用 String #codePointAt(int) 按字符偏移量索引。然而,这种方法存在两个问题:它不按代码点偏移量进行索引,并且处理 BMP 之外的代码点会带来挑战。
另一种方法涉及使用 String#charAt(int) 来获取字符并测试它们在 BMP 中的成员资格。高替代范围。虽然此方法提供了一种确定代码点是否在 BMP 之外的方法,但它具有以下缺点:
最佳解决方案
幸运的是,Java 提供了使用 String#codePointAt(int) 迭代代码点的规范方法:
<code class="java">for (int offset = 0; offset < length; ) { final int codepoint = s.codePointAt(offset); // do something with the codepoint offset += Character.charCount(codepoint); }</code>
解决问题
结论
总结,迭代 Java 字符串中的 Unicode 代码点需要更深入地了解底层编码。然而,使用本文中概述的规范方法为这种常见需求提供了正确且有效的解决方案。
以上是如何迭代 Java 字符串中的 Unicode 代码点?的详细内容。更多信息请关注PHP中文网其他相关文章!