tre*_*ker 247 java string newline line-breaks
如何在Java中替换字符串中的所有换行符,以便在Windows和Linux上工作(即没有特定于OS的回车/换行/换行等问题)?
我试过了(注意readFileAsString是一个将文本文件读入String的函数):
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
如何才能做到这一点?
Kal*_*see 408
您需要设置text结果text.replace():
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");
Run Code Online (Sandbox Code Playgroud)
这是必要的,因为字符串是不可变的 - 调用replace不会更改原始字符串,它会返回一个已更改的新字符串.如果未将结果分配给text,那么新的String将丢失并收集垃圾.
至于获取任何环境的换行符 - 可通过调用获得System.getProperty("line.separator").
Ste*_*n C 208
如其他答案所述,您的代码主要String.replace(...)不起作用,因为不会更改目标字符串.(它不能 - Java字符串是不可变的!)它实际上做的是创建一个新的String,其中的字符根据需要进行了更改.但是你的代码然后扔掉那个String ...
这是一些可能的解决方案.哪一个最正确取决于你究竟想做什么.
// #1
text = text.replace("\n", "");
Run Code Online (Sandbox Code Playgroud)
只需删除所有换行符.这不适用于Windows或Mac线路终端.
// #2
text = text.replace(System.getProperty("line.separator"), "");
Run Code Online (Sandbox Code Playgroud)
删除当前平台的所有行终止符.这不适用于您尝试在Windows上处理(例如)UNIX文件的情况,反之亦然.
// #3
text = text.replaceAll("\\r|\\n", "");
Run Code Online (Sandbox Code Playgroud)
删除所有Windows,UNIX或Mac行终止符.但是,如果输入文件是文本,这将连接单词; 例如
Goodbye cruel
world.
Run Code Online (Sandbox Code Playgroud)
变
Goodbye cruelworld.
Run Code Online (Sandbox Code Playgroud)
所以你可能真的想这样做:
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
Run Code Online (Sandbox Code Playgroud)
用空格替换每个行终止符.
Fab*_*eeg 21
如果只想删除当前操作系统上有效的行终止符,可以执行以下操作:
text = text.replaceAll(System.getProperty("line.separator"), "");
Run Code Online (Sandbox Code Playgroud)
如果要确保删除任何行分隔符,可以这样做:
text = text.replaceAll("\\r|\\n", "");
Run Code Online (Sandbox Code Playgroud)
或者,稍微冗长,但更少的regexy:
text = text.replaceAll("\\r", "").replaceAll("\\n", "");
Run Code Online (Sandbox Code Playgroud)
小智 14
此函数将所有空格(包括换行符)向下归一化为单个空格.不完全是原始问题所要求的,但很可能在许多情况下完全需要:
import org.apache.commons.lang3.StringUtils;
final String cleansedString = StringUtils.normalizeSpace(rawString);
Run Code Online (Sandbox Code Playgroud)
JSB*_*ach 11
我想这会很有效率
String s;
s = "try this\n try me.";
s.replaceAll("[\\r\\n]+", "")
Run Code Online (Sandbox Code Playgroud)
编辑语法高亮
小智 10
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
Run Code Online (Sandbox Code Playgroud)
经过大量的搜索后,我找到了很好的工作,但是每一行都失败了.
在 Kotlin 中,以及从 Java 11 开始,String有lines()一个方法,它返回多行字符串中的行列表。您可以获取所有行,然后将它们合并成一个字符串。
使用 Kotlin 就变得很简单
str.lines().joinToString("")
Run Code Online (Sandbox Code Playgroud)