我有以下字符串
String str="aaaaaaaaa\n\n\nbbbbbbbbbbb\n \n";
我想在\n
打破它,所以最后我应该有两个字符串aaaaaaaa
和bbbbbbbb
。我不想要最后一个,因为它只包含空格。所以,如果我使用str.split()
基于新行字符拆分它,则最终数组应该只有两个条目。
我试过以下:
String str="aaaaaaaaa\n\n\nbbbbbbbbbbb\n \n".replaceAll("\\s+", " ");
String[] split = str.split("\n+");
它会忽略所有\n
并提供单个字符串aaaaaaaaaa bbbbbbbb
。
答案 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