gpt4 book ai didi

java - 只能识别 CR LF 的扫描仪

转载 作者:行者123 更新时间:2023-11-30 09:41:51 24 4
gpt4 key购买 nike

我正在使用扫描仪类读取文件。我希望我的 EOL 定界符是 CR LF,但文件中有一些记录只有 LF,因此我的扫描仪正在读取 LF 并转到下一行。我希望扫描仪仅在同时遇到 CR LF 时才转到下一行。
这是我的代码片段:(在正则表达式中使用双斜杠也给出相同的结果)

java.util.Scanner sMain = new java.util.Scanner(inputStream,encoding)
.useDelimiter(Pattern.compile("[\r\n]"));
while (sMain.hasNextLine()) {
// sysout line
}

最佳答案

所以你想要一个分隔符是

"\r\n"

[\r\n]" 表示\r 或\n 之一。

定界符决定了“词”之间的分隔符。要拆分该行,您可以按如下方式使用 split("~")。

ByteArrayInputStream inputStream = new ByteArrayInputStream((
"a line~with a \r and~a \n in it \r\n" +
"a line with \n\r in~it\r\n").getBytes());

Scanner sMain = new Scanner(inputStream,"UTF-8").useDelimiter("\r\n");
Pattern wordPattern = Pattern.compile("~");
while (sMain.hasNext()) {
String line = sMain.next();
line = line.replaceAll("\r", "\\\\r").replaceAll("\n", "\\\\n");
String[] words = wordPattern.split(line);
System.out.println(Arrays.toString(words));
}

打印

[a line, with a \r and, a \n in it ]
[a line with \n\r in, it]

关于java - 只能识别 CR LF 的扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com