【发布时间】:2018-07-05 08:46:29
【问题描述】:
我有一个类似于 a????b????c 的字符串,我想将其拆分为单个字符/字符串。
static List<String> split(String text ) {
List<String> list = new ArrayList<>(text.length());
for(int i = 0; i < text.length() ; i++) {
list.add(text.substring(i, i + 1));
}
return list;
}
public static void main(String... args) {
split("a\uD83D\uDC4Fb\uD83D\uDE42c")
.forEach(System.out::println);
}
您可能已经注意到,而不是 ????和 ????我得到了两个奇怪的字符:
a
?
?
b
?
?
c
【问题讨论】:
-
那些不是 UTF-16 字符,这就是问题所在。这些是 UTF-32 代码点。
-
如答案所示,这可以相当容易地完成。但是,一旦您尝试尝试将呈现为单个字形的字符组合起来,它就会变成另一种地狱。