Java 8流:IntStream到String[英] Java 8 Streams: IntStream to String

问题描述

Java 8 流 API 中,对任何 String 对象调用 chars() 会返回一个包含所有字符的 IntStream 对象.

将返回的 IntStream 对象转换回 String 的正确方法是什么?调用 toArray() 会给我一个 int[],它不被任何 String 构造函数接受.

解决方案

你可以使用toArray(),然后String(int[], int, int) 构造函数.这并不完全令人满意,因为 chars() 被指定返回 UTF-16 代码单元,基本上:

<块引用>

返回一个 int 流,对该序列中的 char 值进行零扩展.任何映射到代理代码点的字符都会未经解释地传递.

使用 codePoints() 相反会更符合这个构造函数,它需要代码点而不是 UTF-16 代码单元.否则(使用 chars)如果您的原始字符串 确实 包含代理对,您可能会发现错误 - 我没有尝试过,但它会有意义.

我不知道不先转换为数组的简单方法.

本文地址:https://www.itbaoku.cn/post/978714.html