删除Java中每行末尾的所有空格

时间:2013-08-16 07:48:54

标签: java regex

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

我使用以下方法:

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

这里,“\ s + $”是正则表达式

似乎是对的。但事实是我不会删除它。

字符串是:

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

3 个答案:

答案 0 :(得分: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()将修改字符串a。 Java中的字符串是不可变的(它们不能改变)。 a.replaceAll()将返回修改后的字符串。

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:-1)

Delete all the space at end of each line in Java

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

使用

string.trim()
  

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