2012-02-07 44 views
3

我想閱讀一個文本文件,其中字段數據由分隔符分隔| (管道符號)。Java - 掃描儀:通過Pipe |分隔的記錄的讀取行作爲分隔符

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

這裏是我的代碼:

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。

回答

11

管道字符是一個保留的正則表達式字符,您需要將其轉義。 例如,你需要使用

\\| 

將在你的代碼給出了下面的輸出

  • Ÿ
  • GT
  • 尼泊爾
  • Ganesh神
  • 蒂瓦里
  • N
+0

OH。我知道了。使用「[| \\ *]」而不是|。問題解決了..謝謝 – gtiwari333 2012-02-07 13:29:25