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

时间:2012-02-07 13:24:26

标签: java java.util.scanner

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

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

这是我的代码:

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 |不管用 ?我无法更改框架代码(使用Scanner)并使用String Split。

1 个答案:

答案 0 :(得分:11)

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

\\|

将它放在代码中会得到以下输出

  • ý
  • 2011
  • GT
  • 尼泊尔
  • 内甚
  • 蒂瓦里
  • Ñ