有没有一种高效的方法,在检测到字符串中的第一个换行符时将其拆分成两个部分。
例如,像这样的字符串:
String str = "line 1\n"+
"line 2\n"+
"line 3\n";
我希望你能将“line 1”从字符串中分离出来,其余部分作为另一个字符串,因此最终结果如下:
string1 = "line 1";
string2 = "line 2\n"+
"line 3\n";
有没有一种高效的方法,在检测到字符串中的第一个换行符时将其拆分成两个部分。
例如,像这样的字符串:
String str = "line 1\n"+
"line 2\n"+
"line 3\n";
我希望你能将“line 1”从字符串中分离出来,其余部分作为另一个字符串,因此最终结果如下:
string1 = "line 1";
string2 = "line 2\n"+
"line 3\n";
split(regex,limit)
方法。请尝试。String[] result = yourString.split("\n", 2);
如果您想使用与操作系统相关的换行符
String[] result = yourString.split(System.lineSeparator(), 2);
或者是独立于操作系统的方式
//since Java 8
String[] result = yourString.split("\\R", 2);
//before Java 8
String[] result = yourString.split("\r\n|\r|\n", 2);
现在。result[0] = "line 1";
result[1] = "line 2\nline 3\n";
\r
作为行分隔符,请使用\r|\n|\r\n
修复正则表达式。 - Dmitry Ginzburg\r\n
上创建两个拆分,一个用于\r
,另一个用于\n
,因为正则表达式是从左到右解释的。这就是为什么\r\n
应该在\r
和\n
之前。无论如何,感谢您指出这一点。 - Pshemo\r|\n|(\r\n)
。或者只需使用(\r?\n)|\r
。 - Dmitry Ginzburgfoo|bar|foobar
这样的正则表达式永远不会匹配 foobar
,因为它会先搜索 foo
或 bar
,这将消耗掉 foobar
的部分。一般规则是在更一般的正则表达式之前放置更详细的正则表达式,就像我回答中的正则表达式中应该将 \r\n
放在 \r
和 \n
之前。"或者只是 \r?\n|\r
" 是的,这个可以正确地工作。 - PshemoString.substring()
函数。String str23 = "line 1 \n line 2 \n line3 \n";
String line1 = str23.substring(0, str23.indexOf("\n"));
String line2 = str23.substring(str23.indexOf("\n")+1, str23.length());
System.out.println(line1+"-----"+line2);
String str = "line 1\n line 2\n line 3\n";
int newLineIndex = str.indexOf("\n");
String first = str.substring(0, newLineIndex);
String rest = str.substring(newLineIndex + 1);