删除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()