2014-03-24 40 views
0

我有下面的代碼,其提取製表符分隔的字符串爲一個字符串數組:爪哇: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?還是我必須自己實施一些東西?

這裏的一些例子:

字符串OK =一個\ TB \ TC \ TD \ TE 字符串NOK =一個\ TB \ TC \噸\ TE

拉爾夫

回答

0

發現這一點:How to split a string in Java

,我也可以用

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

做如果有多個分隔符集合在一個地方,請獲取空字符串。

無論如何,謝謝!