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

2022-09-01 00:00:04

我想用“+”替换字符串中的所有空格字符,将所有“ß”替换为“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", "+");
}

为什么它不起作用?是机器人,日食还是什么问题?

提前致谢!


答案 1

您需要逃离斜杠

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

答案 2

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

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

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

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