如何使用正则表达式或其他方法删除额外的'\r\n';在java字符串中

如何使用正则表达式或其他方法删除额外的'\r\n';在java字符串中,java,string,Java,String,我有这样一个字符串: String orginal = "this is for test hello\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n" + "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nhello" + "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nhello"; 在文本区域中输入内容时,用户经常按“enter”,因此在java中,它会更改为大量的“\r\n”。

我有这样一个字符串:

String orginal = "this is for test hello\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n" +
    "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nhello" + 
    "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nhello";
在文本区域中输入内容时,用户经常按“enter”,因此在java中,它会更改为大量的“\r\n”。 我想将其更改为:

String newStr = "this is for test hello\r\nhello\r\nhello"
我怎么能只保留一个
\r\n

这样就可以了

String newStr = original.replaceAll("(\r\n)+", "\r\n");

您可能还想考虑使用<代码>行。分隔符< /C>系统属性,而不是硬编码<代码> \r\n>代码>,因为这可能在其他平台上有所不同。例如,Unix只使用单行提要

\n
。这会更便于携带

final String NEWLINE = System.getProperty("line.separator");
String newStr = original.replaceAll("(" + NEWLINE + ")+", NEWLINE);
这应该可以做到

String newStr = original.replaceAll("(\r\n)+", "\r\n");

您可能还想考虑使用<代码>行。分隔符< /C>系统属性,而不是硬编码<代码> \r\n>代码>,因为这可能在其他平台上有所不同。例如,Unix只使用单行提要

\n
。这会更便于携带

final String NEWLINE = System.getProperty("line.separator");
String newStr = original.replaceAll("(" + NEWLINE + ")+", NEWLINE);
通用解决方案(LF-UNIX、CR-Mac、CRLF-Windows)可能是这样的

String newStr = original.replaceAll("(\r\n|\r|\n)+", "$1");
通用解决方案(LF-UNIX、CR-Mac、CRLF-Windows)可能是这样的

String newStr = original.replaceAll("(\r\n|\r|\n)+", "$1");

字符串是否来自
JTextArea
?字符串是否来自
JTextArea