知道某人的基本问题。
而不是来自
"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]", "");
这似乎引起了我的问题。
知道为什么吗?
我显然尝试执行以下操作:删除所有非字符,并删除所有新行。
答案 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]*", " ");