如何遍历Java String的unicode代码点?

如何遍历Java String的unicode代码点?

所以我知道String#codePointAt(int),但它是由char偏移索引,而不是由代码点偏移索引。

我正在考虑尝试这样的事情:

但我担心的是

  • 我不确定自然处于高代理范围内的代码点是否会存储为两个char值或一个值

  • 这似乎是迭代字符的一种非常昂贵的方式

  • 有人必须想出更好的东西。


潇湘沐
浏览 723回答 3
3回答

DIEA

是的,Java使用UTF-16-esque编码来表示字符串的内部表示,是的,它使用代理方案对基本多语言平面(BMP)之外的字符进行编码。如果你知道你将处理BMP之外的字符,那么这是迭代Java字符串字符的规范方法:final&nbsp;int&nbsp;length&nbsp;=&nbsp;s.length();for&nbsp;(int&nbsp;offset&nbsp;=&nbsp;0;&nbsp;offset&nbsp;<&nbsp;length;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;final&nbsp;int&nbsp;codepoint&nbsp;=&nbsp;s.codePointAt(offset); &nbsp;&nbsp;&nbsp;//&nbsp;do&nbsp;something&nbsp;with&nbsp;the&nbsp;codepoint &nbsp;&nbsp;&nbsp;offset&nbsp;+=&nbsp;Character.charCount(codepoint);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java