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

时间:2012-06-15 10:29:15

标签: java regex

知道某人的基本问题。

而不是来自

"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]", "");

这似乎引起了我的问题。

知道为什么吗?

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

7 个答案:

答案 0 :(得分:50)

\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);

答案 1 :(得分:7)

尝试

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

根据系统的不同,换行符为\r\n\n

答案 2 :(得分:3)

我找到了this

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

虽然你有双线,但你会得到一个双倍的空间。我想你可以再做一次替换,用一个替换双空格。

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

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

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

答案 3 :(得分:2)

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

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

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

当我通过复制样本

尝试正则表达式时,我得到了那个空格
"This is my text. "

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

答案 4 :(得分:1)

对于不同的操作系统,新的行分隔符有所不同-Windows为'\ r \ n',对于Linux为'\ n'。

为了安全起见,您可以使用正则表达式模式 \ R-Java 8引入的换行匹配器

String inlinedText = text.replaceAll("\\R", " ");

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

这应该注意空格,制表符和换行符:

data = data.replaceAll("[ \t\n\r]*", " ");