我使用Java中的Scanner
类进行IO操作。
我想读取文件中以“\n\r|[\r\n]”结尾的每一行,不包括也可能代表行分隔符的其他分隔符,例如“[\u2028\2029\0085]” 。
如果我使用 Scanner.nextLine()
,除非我更改 Scanner
的源代码,否则将包含这些 unicode 分隔符。
如果我使用 Scanner.next("some pattern") ,空行将被忽略,这不是我所期望的。
有什么正确的方法可以做到这一点吗?谢谢。
最佳答案
扫描仪不提供覆盖其用于行结尾的模式的方法。
但是,您可以实现类似的效果:
String line = scanner.next("[\R
\u2028\u2029\u0085]");
并使用scanner.hasNext("[\R\u2028\u2029\u0085]")
而不是scanner.hasNextLine()
。
注意:\R
是在版本 8 中引入的,表示任何“行结束”字符序列(即 \r\n
、\n
或 \r
适用于 Windows、*nix 和 mac)
关于Java Scanner指定行分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62036280/