Java replaceAll("\\s+") vs replaceAll("\\\\s+")

7

replaceAll("\\s+")replaceAll("\\\\s+")有什么区别?通常我使用\\s+,但有时我看到\\\\s+


在Java中,\应该写成\。这会对你有所帮助。 - Maroun
这应该有助于解决您的问题: https://dev59.com/FG445IYBdhLWcg3w4-Be - peterremec
1个回答

20

\\s+ --> 替换 1 个或多个空格。

\\\\s+ --> 替换实际的 \ 加上一个或多个 s。

代码:

public static void main(String[] args) {
    String s = "\\sbas  def";
    System.out.println(s);
    System.out.println(s.replaceAll("\\s+", ""));
    System.out.println(s.replaceAll("\\\\s+", ""));

}

输出:

\sbas  def
\sbasdef
 bas  def

“...跟着s一次或多次。”你是指符号“s”还是空格? - Maxim Gotovchits
@MaximGotovchits - 请检查我的编辑.. - TheLostMind
但是这里的第一个“\”在哪里呢,“\sbasdef”? - Maxim Gotovchits
@MaximGotovchits - 字符s而非空格。第一个\\将被转义。 - TheLostMind
它还会删除控制字符,如换行符、制表符等。例如:" \r \n\n \t ".replaceAll("\s+","" ).length() == 0 >> true - Gabe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接