尝试这个。
String s = "ac";
List<String> result = List.of(s.split("(?<=.)"));
for (String e : result)
System.out.println(e + " : length=" + e.length());
Run Code Online (Sandbox Code Playgroud)
输出:
: length=2
a : length=1
: length=2
c : length=1
: length=2
Run Code Online (Sandbox Code Playgroud)
或者,使用代码点整数流。
List<String> result =
s
.codePoints() // Produce a `IntStream` of code point numbers.
.mapToObj(Character::toString) // Produce a `String` containing one or two java chars for each code point in the stream.
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
要捕获代码点,请使用上述代码的这种变体。
String s = "ac";
List<String> result = List.of(s.split("(?<=.)"));
for (String e : result)
System.out.println(e + " : length=" + e.length());
Run Code Online (Sandbox Code Playgroud)
运行时:
codePointNumbers.toString(): [128522, 97, 128102, 99, 128522]