Java不能与正则表达式一起使用,表示:无效的转义序列

时间:2010-04-28 21:26:42

标签: java android regex eclipse whitespace

我想用“+”替换字符串中的所有空格字符,用“ss”替换所有“ß”...它适用于“ß”,但不知何故eclipse不会让我使用\ s一个空白..我尝试了“\ t”,但它也不起作用..我得到以下错误:

  

无效的转义序列(有效转义序列   是\ b \ t \ n \ f \ r \“\'\)

这是我的代码:

try {
    String temp1 = from.getText().toString();
    start_from  = temp1.replaceAll("ß", "ss");
    start_from  = start_from.replaceAll("\s", "+");
}

为什么不起作用?这是android,eclipse还是什么问题?

提前感谢!

3 个答案:

答案 0 :(得分:60)

你需要逃避斜杠

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

答案 1 :(得分:9)

问题是\是java 中的转义字符以及正则表达式模式。如果你想匹配正则表达式模式\n,比如说,你会继续写下来

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

正则表达式模式不会最终成为\n:它会成为一个实际的换行符,因为这就是"\n"在Java中的含义。如果您希望模式包含反斜杠,则需要确保转义该反斜杠,以便不将其视为字符串中的特殊字符。

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

答案 2 :(得分:1)

您可以使用java.util.regex.Pattern类,并将p = Pattern.compile("\s");p.matcher(start_from).replaceAll("+")结合使用。或者,只需将“\ s”元字符转义为“\\ s”。