5

Javaでタブ区切りファイルを読み取るための次のコードがあります。

while ((str = in.readLine()) != null) {
  if (str.trim().length() == 0) {
          continue;
  }

  String[] values = str.split("\\t");

  System.out.println("Printing file content:");
  System.out.println("First field" + values[0] + "Next field" +  values[1]);
}

ただし、ファイルの内容ではなく1を出力します。ここで何が問題になっていますか?サンプルファイルの行は次のようになります。

{Amy Grant}{/m/0n8vzn2}{...}
4

2 に答える 2

14

試してみてくださいSystem.out.println(Arrays.asList(values))

これはうまくいきます!しかし、フィールドに個別にアクセスする必要があります。私のコードで何が wring なのか教えていただけますか?

私はあなたが得ていると思いますIndexOutOfBoundsException。発生しているエラーは重要であり、無視すると問題を解決することは期待できません。

これは、フィールド セットが 1 つしかないことを意味します。

String[] values = str.split("\\t", -1); // don't truncate empty fields

System.out.println("Printing file content:");
System.out.println("First field" + values[0] + 
   (values.length > 1 ? ", Next field" +  values[1] : " there is no second field"));
于 2013-01-16T15:28:06.930 に答える
6

\tの代わりに書いてください\\t。それはあなたが望むものの多くになるでしょう

String[] values = str.split("\t");

私はいくつかのプロジェクトでhttp://sourceforge.net/projects/opencsv/を使用していますが、それは仕事を非常にうまくやり遂げます。

于 2013-01-16T15:20:09.423 に答える