Ответ 1
Вам нужно избежать косой черты
start_from = start_from.replaceAll("\\s", "+");
Я хочу заменить все пробельные символы в строке "+" и все "ß" на "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 или что?
заблаговременно!
Вам нужно избежать косой черты
start_from = start_from.replaceAll("\\s", "+");
Проблема заключается в том, что \
является escape-символом в java, а также шаблонами регулярных выражений. Если вы хотите совместить шаблон регулярного выражения \n
, скажем, и вы бы пошли и напишите
replaceAll("\n", "+");
Шаблон регулярного выражения не будет \n
: он должен быть фактической новой строкой, так как это означает, что "\n"
означает в Java. Если вы хотите, чтобы шаблон содержал обратную косую черту, вам нужно убедиться, что вы избегаете этой обратной косой черты, чтобы она не рассматривалась как специальный символ внутри строки.
replaceAll("\\s", "+");
Вы можете использовать класс java.util.regex.Pattern и использовать что-то вроде p = Pattern.compile("\s");
в сочетании с p.matcher(start_from).replaceAll("+")
. Кроме того, просто избегайте метасимвола "\ s" как "\\ s".