Java:StringTokenizer不尊重分隔符

时间:2014-03-24 14:23:18

标签: tokenize stringtokenizer

我有以下代码将以制表符分隔的字符串提取为字符串数组:

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”。

只要一个标签分隔两个字符串,一切都很棒。但是,我的数据集有时在两个制表符之间有两个字符串。这意味着缺少一个参数,并且应该将一个emptry字符串添加到列表中。但是,该方法忽略了该方法,只返回一个少一个字符串的数组。

在我的特定情况下,我总是想要一个包含5个字符串的数组。这意味着,只包含4个没有文本的选项卡的文本将返回一个包含5个空字符串的数组(基于该字符串的解析作业需要)。不幸的是,我无法控制内容,而且我正在使用由我控制的数百万个文件。

使用StringTokenizer有更好的方法吗?或者我必须自己实施一些东西?

这里有一些例子:

String ok = a \ tb \ tc \ td \ te String nok = a \ tb \ tc \ t \ te

拉​​尔夫

1 个答案:

答案 0 :(得分:0)

找到了这个:How to split a string in Java

我可以用

来做
"myString".split("\t", -1);

如果在一个地方有多个分隔符,则获取空字符串。

非常感谢!