期望
输入 "ABCD😊😭E"
输出 ["ABCD", "😊😭", "E"]
实现
List<String> splitEmoji(String text) {
final List<String> out = [];
final pattern = RegExp(
r'(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])');
bool curIsEmoji = false;
String curText = '';
for (var element in text.characters) {
bool isEmoji = pattern.allMatches(element).isNotEmpty;
if (curIsEmoji == isEmoji) {
curText += element;
} else {
if (curText != '') out.add(curText);
curText = element;
curIsEmoji = isEmoji;
}
}
if (curText != '') out.add(curText);
return out;
}