【发布时间】:2014-03-24 14:23:18
【问题描述】:
我有以下代码将制表符分隔的字符串提取到字符串数组中:
static public List<String> getContents(File aFile, String separator){
// all strings, split based on separator
List<String> contentList = new ArrayList<String>();
StringTokenizer tokenizer = new StringTokenizer(Util.getContents(aFile), separator);
while (tokenizer.hasMoreTokens()){
contentList.add(tokenizer.nextToken());
}
return contentList;
}
因此,这种情况下的分隔符是“\t”。
只要两个字符串用一个制表符隔开,一切都很好。但是,我的数据集有时在两个选项卡之间有两个字符串。这意味着缺少一个参数,应该将一个空字符串添加到列表中。然而,该方法忽略了这一点,只返回一个少一个字符串的数组。
在我的特殊情况下,我总是想要一个包含 5 个字符串的数组。这意味着,仅包含 4 个没有文本的选项卡的文本会返回一个由 5 个空字符串组成的数组(基于此的解析作业需要)。不幸的是,我无法控制内容,我正在处理数百万个不受我控制的文件。
有没有更好的方法来使用 StringTokenizer ?还是我必须自己实现一些东西?
这里有一些例子:
字符串 ok = a\tb\tc\td\te 字符串 nok = a\tb\tc\t\te
拉尔夫
【问题讨论】: