Замена (не удаление) специального символа в строке другим символом - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно заменить "《br》" на "<br>".

replaceAll не работает, но если я делаю это в окне переменных при отладке ... это работает!

То же самое с indexOf("《"), возвращает -1, но с использованием окна переменной возвращает 12

Как я могу заменить его?

This is what I see in the variable windows when debugging. The same in code does not work.

image: pos1=-1)">

Так вот вопрос, как заставить это работать в коде

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Для меня замена работает просто отлично.

public class Application {
    public static void main(String[] args) {
        String s = "《br》";
        s = s.replace("《", "<").replace("》", ">");
        System.out.println(s);
    }
}

《не может быть одним символом, хотя «'» выдает ошибку, но «《» работает.

Это Документация по символам:

Набор символов от U + 0000 до U + FFFF иногда называют базовой многоязычной плоскостью (BMP).Символы, кодовые точки которых больше, чем U + FFFF, называются дополнительными символами.Платформа Java использует представление UTF-16 в массивах символов и в классах String и StringBuffer.В этом представлении дополнительные символы представлены в виде пары значений символов, первое из диапазона верхних суррогатов (\ uD800- \ uDBFF), второе из диапазона нижних суррогатов (\ uDC00- \ uDFFF).

0 голосов
/ 14 ноября 2018

Поскольку String является неизменяемой, вы не меняете исходное значение переменной text. replaceAll создает новую строку с правильным значением, и вы должны назначить ее переменной, чтобы использовать ее.

Ссылка на использование может быть найдена здесь с некоторыми дополнительными пояснениями, но основное использование:

String originalText ="some text with letters to replace";  
String newTextWithReplacedValues = originalText.replaceAll("a","e");//replaces all occurrences of "a" to "e"  
System.out.println(newTextWithReplacedValues);  

Вы можете видеть, как он работает в отладчике, так как text.replaceAll(...) возвращает правильное значение. Он просто не меняет исходную переменную text.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...