У меня есть строка, закодированная в UTF-8. Например:
Thats a nice joke 😆😆😆 😛
Мне нужно извлечь все emojis, присутствующие в предложении. И emoji может быть любым
Когда это предложение просматривается в терминале с помощью команды less text.txt
, оно рассматривается как:
Thats a nice joke <U+1F606><U+1F606><U+1F606> <U+1F61B>
Это соответствующий код UTF для emoji. Все коды для emojis можно найти на emojitracker.
Для поиска всех событий я использовал шаблон регулярного выражения (<U\+\w+?>)
, но он не работал для кодированной строки UTF-8.
Ниже приведен мой код:
String s="Thats a nice joke 😆😆😆 😛";
Pattern pattern = Pattern.compile("(<U\\+\\w+?>)");
Matcher matcher = pattern.matcher(s);
List<String> matchList = new ArrayList<String>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for(int i=0;i<matchList.size();i++){
System.out.println(matchList.get(i));
}
Этот pdf говорит Range: 1F300–1F5FF for Miscellaneous Symbols and Pictographs
. Поэтому я хочу захватить любой символ, лежащий в этом диапазоне.