конвертировать юникод в строку Java из строкового представления юникода - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть строка, которая выглядит так:

Температура: 98,6 ° F (37,0 ° C)

В конечном счете, хотелось бы преобразовать ее так, чтобы она выглядела

98,6 (37,0)

Я сталкиваюсь со всеми решениями, делающими это?или какой-то другой символ, что я хочу сделать, это поместить строку для решения Unicode там.

Все решения, с которыми я сталкивался или пробовал, не работают.

Заранее спасибо.

1 Ответ

0 голосов
/ 27 сентября 2018

Просто переберите символы строки и замените символы, не входящие в ASCII, на escape-код Unicode:

String s = "Temperature: 98.6°F (37.0°C)";
StringBuilder buf = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    if (c >= 0x20 && c <= 0x7E) // visible ASCII character
        buf.append(c);
    else
        buf.append(String.format("\\u%04x", (int) c));
}
String t = buf.toString();
System.out.println(t);

Вывод

Temperature: 98.6\u00b0F (37.0\u00b0C)

В Java 9+, это еще проще:

String s = "Temperature: 98.6°F (37.0°C)";
String t = Pattern.compile("[^ -~]").matcher(s)
                  .replaceAll(r -> String.format("\\\\u%04x", (int) r.group().charAt(0)));
System.out.println(t);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...