Java 遍历代码点:String.codePointAt vs BreakIterator vs IntStream
我可以使用以下两种方法之一迭代字符串的代码点: 从性能的角度来看,一个比另一个好吗?我需要在自定义视图中迭代代码点,性能是一个因素 更新 如评论中所述,最好包括Java 遍历代码点:String.codePointAt vs BreakIterator vs IntStream,java,android,string,unicode,Java,Android,String,Unicode,我可以使用以下两种方法之一迭代字符串的代码点: 从性能的角度来看,一个比另一个好吗?我需要在自定义视图中迭代代码点,性能是一个因素 更新 如评论中所述,最好包括CharSequence.codePoints(),这是一个IntStream。然而,我很难理解流是如何工作的。目前我已经阅读,并且。这可能需要一个新的问题 我还添加了Android标签,因为我是在Android中添加的,直到API 24才添加。从Java 8开始,有一个使用流的应用程序,可能也添加了一个?@ToddSewell,这对我
CharSequence.codePoints()
,这是一个IntStream
。然而,我很难理解流是如何工作的。目前我已经阅读,并且。这可能需要一个新的问题
我还添加了Android标签,因为我是在Android中添加的,直到API 24才添加。从Java 8开始,有一个使用流的应用程序,可能也添加了一个?@ToddSewell,这对我来说是一个新的应用程序。谢谢你让我知道。从Java 8开始,有一个使用流的软件,也许还可以添加这个软件?@ToddSewell,这对我来说是一个新的软件。谢谢你让我知道。
final int length = s.length();
for (int offset = 0; offset < length; ) {
final int codepoint = s.codePointAt(offset);
// do something with the codepoint
offset += Character.charCount(codepoint);
}
BreakIterator boundary = BreakIterator.getCharacterInstance();
boundary.setText(s);
int start = boundary.first();
for (int end = boundary.next(); end != BreakIterator.DONE; end = boundary.next()) {
int codepoint = text.substring(start, end);
// do something with the codepoint
start = end;
}