Java:如何只用一个替换多个回车?

ant*_*ony 2 java regex string

我想清理用户评论:

  • 删除所有重复的回车
  • 删除最后的所有回车

例子:

"Hello guys,
it's my example,



to try to clean


my comment
"
Run Code Online (Sandbox Code Playgroud)

我想:

"Hello guys,
it's my example,

to try to clean

my comment"
Run Code Online (Sandbox Code Playgroud)

我试过,s.replaceAll("(?:\\n|\\r)", "");但它不适用于我的第一个案例。

非常感谢您的帮助 !

And*_*niy 7

这应该很容易:

s.replaceAll("[\n\r]{2,}","\n\n")
Run Code Online (Sandbox Code Playgroud)

它将所有连续的回车(等于或大于 2)替换为两个回车。

更新:@John Bollinger 指出了一件非常好的事情:“......这种方法会将单个 Windows 风格的行终止符转换为双 Unix 风格的行终止符......”

所以可能更好、更通用的方法是:

s.replaceAll("(\n{2,})|(\r{2,})|((\r\n){2,})","\n\n")
Run Code Online (Sandbox Code Playgroud)

UPDATE-2:要删除前导回车也执行:.replaceAll("[\n\r]+$","")