为什么java (1.7)给出了下面一行的错误?
String str2 = str.replace("\s+", " ");错误:
Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )   据我所知,"\s+“是一个有效的正则表达式。难到不是么?
发布于 2014-12-23 22:30:14
只会取代文字,这是第一个问题。
第二个问题是,根据定义,\s不是Java文字中的有效转义序列。
这意味着你想要的可能是"\\s+"。
但即使如此,.replace()也不会把它当作准则。您必须使用.replaceAll()来代替:
s.replaceAll("\\s+", "");但还有另一个问题。你好像经常用它..。因此,使用Pattern代替:
private static final Pattern SPACES = Pattern.compile("\\s+");
// In code...
SPACES.matcher(input).replaceAll("");进一步注释:
.replaceFirst();String有它,Pattern也有.replace{First,All}()上使用String时,每次调用都会重新编译一个新的Pattern。如果您必须进行重复匹配,请使用Pattern!发布于 2014-12-23 22:23:26
这是一个有效的正则表达式模式,但\s不是有效的String文字逃逸序列。逃离\。
String str2 = str.replace("\\s+", " ");正如建议的那样,String#replace(CharSequence, CharSequence)并不认为您提供的参数是正则表达式。所以,即使你要编译这个程序,它也不会做你想要它做的事情。看看String#replaceAll(String, String)。
https://stackoverflow.com/questions/27628884
复制相似问题