使用正则表达式替换新行/返回空格

知道的人的基本问题。

而不是来自

"This is my text. And here is a new line" 

至:

 "This is my text. And here is a new line" 

我明白了:

 "This is my text.And here is a new line. 

知道为什么吗?

 L.replaceAll("[\\\t|\\\n|\\\r]","\\\s"); 

我想我找到了罪魁祸首。

在下一行,我执行以下操作:

 L.replaceAll( "[^a-zA-Z0-9|^!|^?|^.|^\\s]", ""); 

这似乎是导致我的问题。

知道为什么吗?

我显然尝试执行以下操作:删除所有非字符,并删除所有新行。

\s是正则表达式中空格字符的快捷方式。 它在字符串中没有意义。 ==>您不能在替换字符串中使用它。 在那里你需要准确填写你想要插入的字符。 如果这是一个空格,只需使用" "作为替代。

另一件事是:为什么你使用3个反斜杠作为转义序列? Java中有两个就足够了。 你不需要| (字符类中的(交替运算符)。

 L.replaceAll("[\\t\\n\\r]+"," "); 

备注

L没有改变。 如果你想得到一个结果,你需要做

 String result = L.replaceAll("[\\t\\n\\r]+"," "); 

测试代码:

 String in = "This is my text.\n\nAnd here is a new line"; System.out.println(in); String out = in.replaceAll("[\\t\\n\\r]+"," "); System.out.println(out); 

尝试

 L.replaceAll("(\\t|\\r?\\n)+", " "); 

根据系统的不同,换行符是\r\n或只是\n

我找到了这个 。

 String newString = string.replaceAll("\n", " "); 

虽然,因为你有双线,你将获得一个双倍的空间。 我想你可以再用一个替换所有用一个替换双空格。

如果这不起作用,请尝试:

 string.replaceAll(System.getProperty("line.separator"), " "); 

如果我使用“\ n”在“string”中创建行,我必须在正则表达式中使用“\ n”。 如果我使用System.getProperty(),我必须使用它。

你的正则表达式是好的,我会用空字符串替换它

 String resultString = subjectString.replaceAll("[\t\n\r]", ""); 

您希望“文本”之间有空格。 和“和”对吗​​?

当我通过复制样本来尝试正则表达式时,我得到了那个空间

 "This is my text. " 

所以一切都很好。 也许如果你只用空字符串替换它就可以了。 我不知道你为什么用\ s替换它。 和交替| 在字符类中不是必需的。

您可以使用第一次拆分并使用空格重新加入它。 它会确定的。

 String[] Larray = L.split("[\\n]+"); L = ""; for(int i = 0; i