Java nextLine()忽略分隔符\\";
我从一个文件中读取输入,其中文本由一个或多个换行符分隔。要忽略空白换行符,我使用Java nextLine()忽略分隔符\\";,java,delimiter,Java,Delimiter,我从一个文件中读取输入,其中文本由一个或多个换行符分隔。要忽略空白换行符,我使用input.useDelimiter(\\n”)但是由于某种原因,NestReo()-方法读取空白行而不是忽略它们。我做错了什么 编辑:假设第一行是空白换行符,第二行有字符串“ABC” 给出此结果:****** 而不是***ABC*** 不使用分隔符模式,它使用自己的内部模式来检查新行的每个实例 要修复此问题,请使用带分隔符模式的Scanner#next()“\\n+”检查一行中是否有多个新行 // Change t
input.useDelimiter(\\n”)代码>但是由于某种原因,NestReo()-方法读取空白行而不是忽略它们。我做错了什么
编辑:假设第一行是空白换行符,第二行有字符串“ABC”
给出此结果:******
而不是***ABC***
不使用分隔符模式,它使用自己的内部模式来检查新行的每个实例
要修复此问题,请使用带分隔符模式的Scanner#next()
“\\n+”检查一行中是否有多个新行
// Change the delimiter to the newline char
// \\r used just for Windows compatibility
input.useDelimiter("[\\r\\n]+");
// Get the next non-blank line
String nextLineThatHasSomething = input.next();
您是否检查了扫描仪下一行的功能?@johnchen902\char正在被转义。@luigimendoza Oops。。。看来我得重读扫描仪上的文件了。你可以一次画一行,然后修剪一下。如果修剪后该行是空字符串,则可以跳过它。即使该行是空的(在行分隔符旁边没有任何内容)
\n
,它仍然是行,因此readLine
正确返回空字符串。您应该感兴趣的是next
方法,而不是nextLine
。另外,如果要忽略空行,您可能应该使用[\n\r]+
作为分隔符。您可以使用System.getProperty(“line.separator”)
来使用当前的操作系统行分隔符。@luigimendoza。。。或者来自Java7 System.lineSeparator()
// Change the delimiter to the newline char
// \\r used just for Windows compatibility
input.useDelimiter("[\\r\\n]+");
// Get the next non-blank line
String nextLineThatHasSomething = input.next();