Подтвердить что ты не робот

Java не работает с regex\s, говорит: недействительная escape-последовательность

Я хочу заменить все пробельные символы в строке "+" и все "ß" на "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", "+");
}

почему он не работает? это проблема с android, eclipse или что?

заблаговременно!

4b9b3361

Ответ 1

Вам нужно избежать косой черты

start_from  = start_from.replaceAll("\\s", "+");

Ответ 2

Проблема заключается в том, что \ является escape-символом в java, а также шаблонами регулярных выражений. Если вы хотите совместить шаблон регулярного выражения \n, скажем, и вы бы пошли и напишите

replaceAll("\n", "+");

Шаблон регулярного выражения не будет \n: он должен быть фактической новой строкой, так как это означает, что "\n" означает в Java. Если вы хотите, чтобы шаблон содержал обратную косую черту, вам нужно убедиться, что вы избегаете этой обратной косой черты, чтобы она не рассматривалась как специальный символ внутри строки.

replaceAll("\\s", "+");

Ответ 3

Вы можете использовать класс java.util.regex.Pattern и использовать что-то вроде p = Pattern.compile("\s"); в сочетании с p.matcher(start_from).replaceAll("+"). Кроме того, просто избегайте метасимвола "\ s" как "\\ s".