Заменить "на \" - PullRequest
       16

Заменить "на \"

0 голосов
/ 17 мая 2018

Я пытаюсь заменить одиночную кавычку ' на этот символ \', конечная цель - преобразовать эту chay'ekka в chay \ 'ekka . Я попробовал этот код:

String cityName = new String("chay'ekka");
System.out.println("before : " + cityName);
cityName = cityName.replaceAll("'", "\\'");
System.out.println("after : " + cityName);

но результат все равно chay'ekka .

Существуют ли какие-либо другие методы или функции в java для достижения этой цели?

Ответы [ 4 ]

0 голосов
/ 17 мая 2018

Вы должны использовать String#replace вместо. метод replaceAll работает с регулярными выражениями, которые вы не используете. Итак, это превратится в

String cityName = new String("chay'ekka");
System.out.println("before : "+cityName);
cityName = cityName.replace("'", "\\'");
System.out.println("after : "+cityName);

Однако вы не должны создавать новые строки с new String. Вместо этого просто сделайте String cityName = "chay'ekka";

0 голосов
/ 17 мая 2018

Вы используете replaceAll, который работает с регулярными выражениями.В то время как вы можете исправить это, удвоив обратную косую черту, нет никаких признаков того, что вам вообще нужны регулярные выражения.Было бы проще просто вызвать String.replace, поскольку при этом не используются регулярные выражения:

String cityName = new String("chay'ekka");
System.out.println("before : " + cityName);
cityName = cityName.replace("'", "\\'");
System.out.println("after : " + cityName);

Обратите внимание, что replace по-прежнему заменяет все вхождения первого аргумента навторой аргумент - наименование между replace и replaceAll плохое :( Было бы лучше, как replace против replaceRegex или что-то подобное.

0 голосов
/ 17 мая 2018

Используйте функцию замены

System.out.println("chay'ekka".replace("'","\\'"));
0 голосов
/ 17 мая 2018

Для представления одной буквенной обратной косой черты необходимо четыре обратных слеша:

String cityName = new String("chay'ekka");
System.out.println("before : "+cityName);
cityName = cityName.replaceAll("'", "\\\\'");
System.out.println("after : "+cityName);

Объяснение того, почему необходимы четыре обратных косых черты, состоит в том, что \\ представляет один буквенный обратный слеш. Но в контексте регулярных выражений саму обратную косую черту необходимо экранировать, поэтому нам нужно четыре из них.

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