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. 那是个更好的选择。编辑成答案:)