You can use toArray()
, then the String(int[], int, int) constructor. This isn't entirely satisfactory as chars()
is specified to return UTF-16 code units, basically:
Returns a stream of int zero-extending the char values from this sequence. Any char which maps to a surrogate code point is passed through uninterpreted.
Using codePoints() instead would be more in-keeping with this constructor, which expects code points rather than UTF-16 code units. Otherwise (with chars
) if your original string does contain surrogate pairs, you may find you get an error - I haven't tried it, but it would make sense.
I don't know of a simple way of doing this without converting to an array first.