2

我正在尝试删除所有行末尾的所有空格和制表符。

我使用以下方法:

string.replace("\\s+$", "");

这里,"\s+$" 是一个正则表达式

看来是对的。但事实是我不会删除它。

字符串是:

               a) AAAAAA.                        
           b) BBBBB.
           c) CCCCCC.
           d) DDDDD.
4

3 回答 3

4

像这样:

string.replaceAll("\\s+$", "");
  • String#replace()不采用正则表达式作为参数。
  • 你需要双重转义\s

编辑:是的,它确实有效:

public static void main(final String[] args) {
    final String a = "     AAAAAAAA             ";
    System.out.println(a.replaceAll("\\s+$", ""));
}

也许您的困惑是您认为a.replaceAll()会修改 String a。Java 中的字符串是不可变的(它们不能更改)。a.replaceAll()将返回修改后的字符串。

EDIT2:如果您使用的是多行字符串,"\\s+[$\n]"则正则表达式应该可以完成工作。

于 2013-08-16T07:50:16.627 回答
4

Use replaceAll(),它使用正则表达式来查找其目标,而不是replace(),它使用纯文本作为其目标。

str = str.replaceAll("(?m)\\s+$", "");

在这里,我添加了(?m)使克拉和美元在换行符之前/之后匹配的开关,您需要在多行输入的情况下使其工作。

于 2013-08-16T07:50:18.280 回答
-1
Delete all the space at end of each line in Java

我猜你需要String#trim()方法

利用

string.trim()

返回字符串的副本,省略前导和尾随空格。

于 2013-08-16T07:51:34.947 回答