【发布时间】:2016-02-17 19:42:46
【问题描述】:
我在下面有这段代码。我要做的是读取一个文本文件,其中每一行都有由制表符分隔的字符串。例如 (name \t country \t id \t content) 其中 \t 是制表符。然后我只想打印每行的第二列。我正在尝试将整行拆分为标记,但它仅适用于文件的第一行,然后它抛出 ArrayIndexOutOfBoundsException。当我尝试仅打印第一列(令牌 [0])而不是我需要的令牌 [1] 时,它也很完美。那么我需要做什么才能获得每行的第二列?
public static void main(String[] args) throws FileNotFoundException, IOException
{
FileInputStream fis=new FileInputStream("a.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(dis)) ;
String line;
while ((line = br.readLine()) != null)
{
String[] tokens=line.split("\\t");
System.out.println(tokens[1]);
}
fis.close();
}
【问题讨论】:
-
如果输入有效,你的代码应该没问题。检查输入文件。
-
你不应该转义\字符,试试这个:line.split("\t")
-
如果输入无效,如果我用空格分割标记,我可以让它工作吗?像 String[] tokens=line.split("\\s") ?
-
@cricket_007 "\t" 是制表符,"\\t" 是 "\t" 文本。
-
数组是零索引的。你在数组的第二个位置抓取一些东西,而不是“第一个”。我建议在访问数组之前拆分
"\\s+"并使用 if 语句