将 unicode 字符串拆分为字符串列表

Split unicode string into list of character strings

如何将包含代理对字符和普通字符的 unicode 字符串拆分为 List<String> 个字符?

(需要String来存储由两个char组成的代理对字符)

试试这个。

String s = "ac";
List<String> result = List.of(s.split("(?<=.)"));
for (String e : result)
    System.out.println(e + " : length=" + e.length());

输出:

 : length=2
a : length=1
 : length=2
c : length=1
 : length=2

代码点

或者,使用 code point 整数流。

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());

看到这个code run live at IdeOne.com

要捕获代码点,请使用上述代码的这种变体。

List<Integer> codePointNumbers = 
    s
    .codePoints()            
    .boxed()       
    .collect( Collectors.toList() ) ;

当运行:

codePointNumbers.toString(): [128522, 97, 128102, 99, 128522]