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))

这行得通!但我需要单独访问这些字段。你能告诉我我的代码有什么问题吗?

我怀疑你得到一个IndexOutOfBoundsException. 您遇到的错误很重要,如果您忽略它,您将无法解决问题。

这意味着您只有一个字段集。

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 回答