Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除Java中每行末尾的所有空格_Java_Regex - Fatal编程技术网

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

删除Java中每行末尾的所有空格,java,regex,Java,Regex,我正在尝试删除我所有行末尾的所有空格和制表符 我使用以下方法: string.replace("\\s+$", ""); 此处,“\s+$”是一个正则表达式 看来是对的。但事实是,我不会删除它 字符串为: a) AAAAAA. b) BBBBB. c) CCCCCC. d) DDDDD. 像这样: string.replaceAll("\\s+$",

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

我使用以下方法:

string.replace("\\s+$", "");
此处,“\s+$”是一个正则表达式

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

字符串为:

               a) AAAAAA.                        
           b) BBBBB.
           c) CCCCCC.
           d) DDDDD.
像这样:

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]”
regex应该可以完成这项工作。

使用
replaceAll()
,它使用regex查找其目标,而不是使用纯文本作为其目标

str = str.replaceAll("(?m)\\s+$", "");
在这里,我添加了
(?m)
开关,该开关使克拉和美元在换行之前/之后匹配,您需要在多行输入的情况下使其工作

Delete all the space at end of each line in Java
我想你需要一种方法

使用

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


是否有无法使用
trim()
的原因?请提供有关为什么不使用trim()的详细信息trim还可以删除起始空格。我不想这样做that@chrylis问题很清楚:在我所有行的末尾。为什么这是没有理由的否决?Trim将删除开头和结尾的空格。是的,我看到了第一个例子,
a)aaaa
也没有正确对齐。我想OP需要它。@liangwang是的,它确实有效。我添加了一个简单的例子,我认为这不适用于多行字符串。尝试使用最后一个字符串a=“AAAAA\n bbbbbb\n”运行它;看看。波希米亚的确实有效。当然,这在多行字符串中不起作用。我看不到任何地方将其指定为多行。我将添加多行支持。@JeroenWarmerdam,我在“\\s+[$\n]”上试过,它不起作用。是的,我正在处理多行字符串
string.trim()