基于新行的java字符串拆分

时间:2014-06-01 14:43:07

标签: java

我有以下字符串

String str="aaaaaaaaa\n\n\nbbbbbbbbbbb\n   \n";

我想在\n打破它,所以最后我应该有两个字符串aaaaaaaabbbbbbbb。我不想要最后一个,因为它只包含空格。所以,如果我使用str.split()基于新行字符拆分它,则最终数组应该只有两个条目。

我试过以下:

String str="aaaaaaaaa\n\n\nbbbbbbbbbbb\n   \n".replaceAll("\\s+", " ");
String[] split = str.split("\n+");

它会忽略所有\n并提供单个字符串aaaaaaaaaa bbbbbbbb

3 个答案:

答案 0 :(得分:2)

删除对replaceAll()的调用,该调用也会删除新行。这样做会:

String[] split = str.split("\n\\s*");

这不会在空格上拆分 - 拆分必须从换行符开始(后跟可选的其他空格)。


以下是使用带边缘案例增强的示例输入的一些测试代码:

String str = "aaaaaaaaa\nbbbbbb bbbbb\n   \n";
String[] split = str.split("\n\\s*");
System.out.println(Arrays.toString(split));

输出:

[aaaaaaaaa, bbbbbb bbbbb]

答案 1 :(得分:1)

这应该可以解决问题:

String str="aaaaaaaaa\n\n\nbbbbbbbbbbb\n   \n";
String[] lines = str.split("\\s*\n\\s*");

它还将从所有行中删除所有尾随和前导空格。

答案 2 :(得分:0)

\ ns将被您的第一个语句删除:\ s匹配\ n