Prepend набор символов - PullRequest
       8

Prepend набор символов

2 голосов
/ 01 марта 2011

Мне нужно добавить обратную реакцию ко всем вхождениям символов из набора, скажем, '"\, в заданной строке.

Например, для строки

He said "I don't know."

должно быть заменено на

He said \"I don\'t know.\"

Как мне это сделать на Java?

Ответы [ 3 ]

6 голосов
/ 01 марта 2011

Попробуйте это регулярное выражение:

["'\\]

Чтобы использовать это в строковом литерале Java, необходимо экранировать двойную кавычку и обе обратные косые черты.

Строка замены должна быть такой:

\\$0

Здесь $0 - ссылка на матч. Обратная косая черта должна быть экранирована, иначе $ становится буквальным. Опять же, обратные слэши должны быть экранированы в строковом литерале Java. Полученный код выглядит так:

s = s.replaceAll("[\"'\\\\]", "\\\\$0");

Посмотреть онлайн: ideone

0 голосов
/ 01 марта 2011

может быть проще, но вот один

     Pattern p = Pattern.compile("(\"|\')");

     StringBuilder sb = new StringBuilder();
     int start = 0;
     Matcher m = p.matcher(s);
     while (m.find()) {
           int end = m.start();
           sb.append(s.substring(start, end));
           sb.append("\\").append(m.group(1));
           start = m.end();
     }
     sb.append(s.substring(start));

     String result = sb.toString();

, где s - ваша входная строка

0 голосов
/ 01 марта 2011

попробуйте использовать следующие регулярные выражения

  1. чтобы найти цитаты /['"]/g
  2. заменить цитаты \$&

надеюсь, что это работает.

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