2014-05-13 90 views
1

我正在阅读来自文件的输入,其中文本由一个或多个换行符分隔。忽略空白换行符我使用input.useDelimiter("\\n");但由于某种原因,nextLine() - 方法读取空行而不是忽略它们。我究竟做错了什么?nextLine()忽略分隔符“\ n”

编辑:假设第一行是一个空白换行,第二行有串"ABC"

input.useDelimiter("[\n]+"); 
    String kjkj = input.nextLine(); 
    System.out.println("***"+kjkj+"***"); 

给出了这样的结果:****** 相反***ABC***

+2

为什么不''“\ n”'? – johnchen902

+4

你有没有检查'Scanner#nextLine'的功能? –

+2

@ johnchen902 \ char正在被转义。 –

回答

7

Scanner#nextLine() 不使用分隔符模式,它使用自己的内部模式来检查新行的每个实例。

要修复它,请使用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(); 
+0

您可以使用'System.getProperty(“line.separator”)'来使用当前的OS行分隔符。 –

+0

@LuiggiMendoza ...或从Java7 System.lineSeparator() – Pshemo