Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每隔一行我应该使用什么拆分器?_Java_String_Split - Fatal编程技术网

Java 每隔一行我应该使用什么拆分器?

Java 每隔一行我应该使用什么拆分器?,java,string,split,Java,String,Split,我有一个每隔一行包含数据的文本文件。我想得到每一个非空行的内容。给定文件的全部文本,我首先尝试使用myText.split(“\n\n”)。令我惊讶的是,它不起作用。我在Windows上工作 Windows使用CRLF作为行分隔符。而你却在自我分裂。那不行 安全的方法是使用: System.getProperty("line.separator"); 在操作系统上获取适当的分隔符 String newLine = System.getProperty("line.separator"); my

我有一个每隔一行包含数据的文本文件。我想得到每一个非空行的内容。给定文件的全部文本,我首先尝试使用
myText.split(“\n\n”)
。令我惊讶的是,它不起作用。我在Windows上工作

Windows使用CRLF作为行分隔符。而你却在自我分裂。那不行

安全的方法是使用:

System.getProperty("line.separator");
在操作系统上获取适当的分隔符

String newLine = System.getProperty("line.separator");
myText.split("(?:" + newLine + ")+");

您可能正在读取在不同操作系统上创建的文件。那么上述方法就行不通了。更好的方法是使用带有
CR
LF
的字符类,如@Marko的注释中所述:

myText.split("[\r\n]+");

如果文本可以来自任何地方(windows/linux/mac),则只有当文本实际上来自java运行的同一操作系统(通常是这样,但不总是这样)时,这种方法才有效。最好按每行的
\n
拆分并修剪
\r
,或者使用涵盖所有情况的通用表达式?像
“[\r\n]+”
。甚至可能是新行的Unicode类别。@MarkoTopolnik这是我的系统中最好的解决方案opinion@MarkoTopolnik. 那是个更好的选择。编辑成答案:)