我的文件包含此字符串:
a
b
c
现在我想读它并用空行拆分所以我有这个:
text.split("\n\n"); where text is output of file
问题是这不起作用。当我将新行转换为字节时,我看到“\ n \ n”表示为10 10,但我文件中的新行由10 13 10 13表示。那么我如何拆分文件?
答案 0 :(得分:6)
Escape Description ASCII-Value
\n New Line Feed (LF) 10
\r Carriage Return (CR) 13
所以你需要在你的情况下尝试string.split("\n\r")
。
如果您想通过空行进行拆分,请尝试\n\r\n\r
。或者您可以使用.readLine()
来读取您的文件,并跳过所有空行。
你确定它是10 13 10 13
吗?它始终应该是13 10
...
而且,你不应该过分依赖line.separator
。因为如果您正在处理来自* nix平台的某些文件,那么它是\n
,反之亦然。甚至在Windows上,一些编辑使用\n
作为新行字符。因此,我建议您使用一些高级方法或使用string.replaceAll("\r\n", "\n")
来标准化您的输入。
答案 1 :(得分:2)
尝试使用:
text.split("\n\r");
答案 2 :(得分:2)
请记住,有时您必须使用:
System.getProperty("line.separator");
获取行分隔符,如果您想使其与平台无关。您还可以使用BufferedWriter's newLine()方法自动处理。
答案 3 :(得分:0)
为什么要分开\n\n
?
您应该在\r\n
上拆分,因为这是文件行分隔的内容。
答案 4 :(得分:0)
一种解决方案是使用“\ n”拆分并忽略空字符串
List<String> lines = text.split("\n");
for(String line : lines) {
line = line.trim();
if(line != "") {
System.out.println(line);
}
}
答案 5 :(得分:0)
尝试使用正则表达式,例如:
<击> 撞击>
<击>text.split("\\W+");
击> <击> 撞击>
text.split("\\s+");
答案 6 :(得分:0)
LF: Line Feed, U+000A
CR: Carriage Return, U+000D
so you need to try to use
"string".split("\r\n");
答案 7 :(得分:0)
使用scanner对象,而不是担心字符/字节。