如何用空的新行拆分字符串

时间:2012-07-30 08:18:37

标签: java string

我的文件包含此字符串:

a

b

c

现在我想读它并用空行拆分所以我有这个:

text.split("\n\n"); where text is output of file

问题是这不起作用。当我将新行转换为字节时,我看到“\ n \ n”表示为10 10,但我文件中的新行由10 13 10 13表示。那么我如何拆分文件?

8 个答案:

答案 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对象,而不是担心字符/字节。