java不能与regex\s一起使用,表示:转义序列无效

q0qdq0h2  于 2021-09-13  发布在  Java
关注(0)|答案(3)|浏览(327)

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

为什么不起作用?这是安卓、eclipse还是什么的问题?
提前谢谢!

rsaldnfx

rsaldnfx1#

你需要逃离刀口

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

fnx2tebb2#

问题是 \ 是java和正则表达式模式中的转义字符。如果要匹配正则表达式模式 \n ,然后你就开始写了

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

正则表达式模式最终不会被使用 \n 当前位置这将成为一条真正的新线,因为这就是 "\n" 在java中是指。如果希望模式包含反斜杠,则需要确保转义该反斜杠,以便它不会被视为字符串中的特殊字符。

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

j1dl9f463#

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

相关问题