2010-08-18 147 views
0

有更好的方法來讀取java中的文件中的令牌嗎? 我目前使用StringTokenizer來分割令牌。但是在大多數情況下,由於您必須通過令牌讀取令牌,因此效率可能非常低下。分割字符串/令牌

謝謝

+1

*「在大多數情況下效率非常低,因爲您必須通過令牌讀取令牌」*,那麼您還希望如何執行此操作?我的意思是,除了掃描整個輸入字符串/流之外,您還將如何「發現」您的令牌? – 2010-08-18 19:50:14

回答

3

如果你在Java API中看看StringTokenizer,你會發現,它建議替代:

StringTokenizer是一個遺留類 保持兼容性的原因 雖然它的使用是在新 代碼氣餒。建議尋求該功能的任何人 使用split方法Stringjava.util.regex包代替。

如果沒有這些選項滿足您的需求,您應該看一看Scanner,同時也支持模式匹配:

Scanner scanner= new Scanner(new File("example.txt")); 
    while (scanner.hasNextLine()) { 
     // do some stuff 
    } 
2

我覺得這個最好的和最靈活的選擇就是GuavaSplitter類。有了它,你可以很好地控制你如何分割一個字符串,並且它返回一個由分割產生的令牌的Iterable<String>。您沒有真正指定您想要執行的操作,以令牌爲單位的讀取令牌「效率低」,但如果您希望使用List例如,則可以使用Lists.newArrayList(Iterable)或或ImmutableList.copyOf(Iterable)Iterable轉換爲列表。

+0

這看起來不錯,我喜歡它+1 – ninesided 2010-08-18 20:17:01

1

您需要添加更多的細節,但簡單的情況split工作得很好。

4

我喜歡在Apache的Jakarta類StringUtils.split()。它可以讓你編寫這樣的代碼:

String[] splitStrings = StringUtils.split(unsplitString, "|"); 

讓我們避開正則表達式,它處理空指針。