只能识别CR LF的java扫描程序
我正在使用scanner类读取文件。我希望我的下线分隔符是CR LF,但文件中有一些记录只有LF,因此我的扫描仪正在读取LF并转到下一行。我希望扫描器只有在遇到这两种情况时才能转到下一行
下面是我的代码片段:(在正则表达式中使用双斜杠也会得到相同的结果)
java.util.Scanner sMain = new java.util.Scanner(inputStream,encoding)
.useDelimiter(Pattern.compile("[\r\n]"));
while (sMain.hasNextLine()) {
// sysout line
}
# 1 楼答案
所以你需要一个分隔符
"[\r\n]"
表示\r或\n中的一个分隔符确定“单词”之间的分隔符。要拆分该行,可以使用split(“~”),如下所示
印刷品
# 2 楼答案
可能是扫描后打印的。问题不在于正则表达式。彼得是对的: 以下是正确的:
但请记住,如果打印,单个\n或\r仍被视为换行符。因此,它可能会显示为更多行。以下测试代码对此进行了说明:
请注意,扫描仪读取的行数为2
# 3 楼答案
Try
(\r\n|\r|\n)
,正则表达式引擎默认值首先尝试匹配第一个选项