Как я могу объединить * \ u "и код UTF-8 для вывода на консоль? (Java) - PullRequest
0 голосов
/ 06 августа 2020

Я хотел бы объединить "\u" с String, который содержит шестнадцатеричный код, чтобы я мог распечатать символ Юникода в консоли.

Я пробовал что-то вроде этого, но консоль печатает только обычный текст, например \uf600:

ArrayList<String> arr = new ArrayList<String>();
emoji.codePoints()
    .mapToObj(Integer::toHexString)
    .forEach((n) -> arr.add(n));  // arr will contain hex strings

for (int i = 1; i < arr.size(); i += 2) {
     System.out.println("\\u" + arr.get(i));
}

1 Ответ

2 голосов
/ 07 августа 2020

В Java, \u существует только в компиляторе для удобства, чтобы помочь вам добавить литералы символов Юникода в исходный код. Если во время выполнения вы создаете строку, содержащую \ u, за которой следуют шестнадцатеричные цифры, нет механизма для преобразования ее в один char.

Похоже, вы хотите преобразовать каждую кодовую точку отдельно к строке. Вот один из способов сделать это: используйте Character.toChars для преобразования кодовой точки в массив символов, а затем создайте новую строку из массива символов:

ArrayList<String> arr = new ArrayList<String>();
emoji.codePoints().mapToObj(Character::toChars).map(String::new)
    .forEach(arr::add)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...