【发布时间】:2020-04-06 06:02:46
【问题描述】:
我需要将可能包含或不包含表情符号的字符串拆分为单个字符列表(保持表情符号完整)。目前,正如预期的那样,任何表情符号都被分割成各个部分。
String s = "????????abc????";
String[] tokens = s.split("");
// tokens is ["?","?","?","?","a","b","c","?","?"]
// tokens should be ["????","????","a","b","c","????"]
我想将项目大小保持在最小,并且几乎没有依赖项,所以我想远离任何 3rd 方库。确切的输出类型并不重要,只要我至少可以按顺序遍历标记即可。
【问题讨论】:
-
如果您使用的是 Java 9+,请尝试
List<String> results = Pattern.compile("\\P{M}\\p{M}*+").matcher(s).results().map(MatchResult::group).collect(Collectors.toList());。见demo -
s.replaceAll("\\p{So}|.", "$0\0").split("\0+");应该也适合你。