【问题标题】:Java: StringTokenizer does not respect separatorJava:StringTokenizer 不尊重分隔符
【发布时间】: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

拉尔夫

【问题讨论】:

    标签: tokenize stringtokenizer


    【解决方案1】:

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

    我可以做到这一点

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

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

    还是谢谢!

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      相关资源
      最近更新 更多