Как узнать, какой персонаж был заменен при использовании регулярных выражений - PullRequest
4 голосов
/ 10 июня 2011
String string = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġs not cool \"oops" ;    
    string = string.replaceAll("[^a-zA-Z0-9 ]+", ... );

Проблема в том, что я хочу добавить к буквенно-цифровым непробельным символам escape-символ. т.е.

" -> \" 
' -> \'.

Так что же должно быть вторым аргументом в методе replaceAll? Или есть какой-нибудь другой крутой способ (я не хочу жестко кодировать)

1 Ответ

3 голосов
/ 10 июня 2011

Если это Java (я добавил соответствующий тег), то вы могли бы сделать

String resultString = subjectString.replaceAll("[\\W\\S]", "\\\\$0");

, который заменит любой не-символ / непробельный символ его экранированным аналогом.

Обратите внимание, что регулярное выражение не предпринимает никаких попыток определить, сбежал ли уже персонаж.Вы также должны знать, что \W в Java не поддерживает локали, поэтому он также будет соответствовать буквам Юникода.

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