Я хочу заменить все пробельные символы в строке с "+" и весь "ß" с "ss"... это работает хорошо на "ß", но так или иначе затмите, не позволит мне использовать \s для пробела.. Я попробовал "\t" вместо этого, но он не работает также.. Я получаю следующую ошибку:
Недопустимая escape-последовательность (допустимые являются \b \t \n \f \r \" \' \),
это - мой код:
try {
String temp1 = from.getText().toString();
start_from = temp1.replaceAll("ß", "ss");
start_from = start_from.replaceAll("\s", "+");
}
почему это не работает? действительно ли это - проблема с андроидом, затмением или что?
заранее спасибо!
Вам нужно избегать косой черты
start_from = start_from.replaceAll("\\s", "+");
Проблема в том, что \
является escape-символом в шаблонах регулярных выражений java , а также . Если вы хотите сопоставить шаблон регулярного выражения \ n
, скажем, и вы должны написать
replaceAll("\n", "+");
Шаблон регулярного выражения не будет в конечном итоге \ n
: он будет en до фактического перевода строки, поскольку это то, что означает "\ n"
в Java. Если вы хотите, чтобы шаблон содержал обратную косую черту, вам нужно убедиться, что вы экранировали эту обратную косую черту, чтобы она не рассматривалась как специальный символ в строке.
replaceAll("\\s", "+");
Вы можете использовать класс java.util.regex.Pattern и использовать что-то вроде p = Pattern.compile ("\ s");
в сочетании с p.matcher (start_from) .replaceAll ("+")
. В качестве альтернативы просто экранируйте метасимвол "\ s" как "\\ s".