Java - Scanner:读取由管道分隔的记录行 |作为分隔符

发布于 2025-01-03 01:23:01 字数 604 浏览 0 评论 0原文

我想读取一个文本文件,其中字段数据由分隔符 | 分隔(管道符号)。

但是发生了一些意想不到的事情:

这是我的代码:

doScannerTest ("Y~2011~GT~Nepal~Ganesh~Tiwari~N", "~");
doScannerTest("Y|2011|GT|Nepal|Ganesh|Tiwari|N", "|");

private static void doScannerTest(String recordLine, String delim) {
    java.util.Scanner lineScanner = new java.util.Scanner(recordLine);
    lineScanner.useDelimiter(delim);
    while (lineScanner.hasNext()) {
        System.out.println(lineScanner.next());
    }
}

delim ~ 工作正常,但是 |打印 recordLine 中的所有字符。

为什么记录带delim |不工作?我无法更改框架代码(使用扫描仪)并使用字符串拆分。

I want to read a text file where fields data are separated by delimiter | (pipe symbol).

But some unexpected happened :

Here is my code :

doScannerTest ("Y~2011~GT~Nepal~Ganesh~Tiwari~N", "~");
doScannerTest("Y|2011|GT|Nepal|Ganesh|Tiwari|N", "|");

private static void doScannerTest(String recordLine, String delim) {
    java.util.Scanner lineScanner = new java.util.Scanner(recordLine);
    lineScanner.useDelimiter(delim);
    while (lineScanner.hasNext()) {
        System.out.println(lineScanner.next());
    }
}

The delim ~ works fine but | prints all characters in recordLine.

Why the record with delim | is not working ? I cannot change the framework code(which uses Scanner) and use String Split.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世界和平 2025-01-10 01:23:01

管道字符是保留的正则表达式字符,您需要对其进行转义。
例如,您需要将

\\|

其放入代码中,给出以下输出

  • Y
  • 2011
  • GT
  • 尼泊尔
  • Ganesh
  • Tiwari
  • N

the pipe character is a reserved regex character, you will need to escape it.
for example you need to use

\\|

putting that in your code gives the below output

  • Y
  • 2011
  • GT
  • Nepal
  • Ganesh
  • Tiwari
  • N
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文