Как заменить часть строки специальными символами - PullRequest
3 голосов
/ 01 декабря 2010

Я хотел бы заменить определенную часть строки на "\\_\\_\\_\\_\\_"

(e.g. String str = "Hello World")

Если я сделаю str.replaceAll("World", "\\_\\_\\_\\_\\_");

, я не вижу символ "\" вмоя замененная строка, я ожидаю, что она покажет мне "Hello \_\_\_\_\_"

Ответы [ 3 ]

4 голосов
/ 01 декабря 2010

Вам нужно:

str = str.replaceAll("World", "\\\\_\\\\_\\\\_\\\\_\\\\_");

См.

\ - escape-символ в строках Java. Таким образом, чтобы обозначить литерал \, вам нужно экранировать его с другим \ как \\.

\ также является escape-символом для двигателя регулярных выражений. Таким образом, \\ в строке Java будет отправлено в механизм регулярных выражений как \, который не обрабатывается буквально, а вместо этого будет использоваться для экранирования следующего символа.

Чтобы передать \\ в механизм регулярных выражений, вам нужно иметь \\\\ в строке Java.


Поскольку вы заменяете строку (не образец) другой строкой, действительно не требуется регулярное выражение , вы можете использовать метод replace класса String как:

input = input.replace("World", "\\_\\_\\_\\_\\_");

См.

2 голосов
/ 01 декабря 2010

Вам нужно использовать 4 обратных слеша для вставки одного.

Дело в том, что в литеральных строках Java обратный слеш является escape-символом, поэтому литеральная строка "\" представляет собой один обратный слеш.Но в регулярных выражениях обратный слеш также является escape-символом.Регулярное выражение \ соответствует одиночному обратному слешу.Это регулярное выражение в виде строки Java становится "\\".

Так попробуйте что-то вроде этого:

String str = "hello world";
System.out.println(str.replace("world","\\\\_\\\\_\\\\_\\\\"));
1 голос
/ 01 декабря 2010

Посмотрите этот пост.

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