2012-02-07 13 views
3

フィールドのデータが区切り文字で区切られたテキストファイルを読みたい(パイプ記号)。ここでJava - スキャナ:レコードの行をパイプで区切って読み込む|区切り文字として

が私のコードです:

は、しかし、いくつかの予期せぬことが起こっ

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

パイプ文字は予約済みの正規表現文字ですので、エスケープする必要があります。 例えば、あなたのコード内で以下の出力

  • Y
  • を与えることを置く

    \\| 
    

    を使用する必要がGT

  • ネパール
  • ガネーシュ
  • Tiwariさん
  • N
+0

OH。わかった。 |の代わりに[| \\ *] "を使用しました。問題は解決しました..ありがとう – gtiwari333

関連する問題