2011-12-21 96 views
0

我需要使用分隔符來標記字符串。java中的字符串令牌化

StringTokenizer能夠使用給定的分隔符來標記字符串。但是,如果字符串中有兩個連續的分隔符,那麼它不會將其視爲標記。

在此先感謝您的幫助

問候,

+0

的'StringTokenizer'的javadocs狀態'的StringTokenizer是保持兼容性的原因,儘管其使用在新代碼氣餒的遺留類。建議任何尋求此功能的人都使用String或java.util.regex包的拆分方法代替。「所以你應該看看mcfinnigan和Francois提供的答案。 – Qwerky 2011-12-22 14:56:17

回答

1
public StringTokenizer(String str, 
         String delim) 

構造爲指定字符串string tokenizerdelim argument中的字符是分隔令牌的分隔符。 分隔符本身不會被視爲標記。
因此,對於可以使用..

String.split(String delim); 
+0

值得一提的是它實現了Enumeration接口。請參閱http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html – Dennis 2011-12-21 09:44:23

3

的第二個參數StringTokenizer對象的構造僅僅是包含所有您需要的分隔符的字符串。

StringTokenizer st = new StringTokenizer(str, "@!"); 

在這種情況下,有兩個分隔符都@!

考慮這個例子:

String s = "Hello, i am using Stack Overflow;"; 
System.out.println("s = " + s); 
String delims = " ,;"; 
StringTokenizer tokens = new StringTokenizer(s, delims); 
while(tokens.hasMoreTokens()) 
    System.out.println(tokens.nextToken()); 

在這裏,你會得到類似這樣的輸出與3個分隔符:

Hello 
, 

i 

am 

using 

Stack 

Overflow 

; 
2

使用java.lang.String的split()方法並傳遞它是一個正則表達式,它匹配您的一個或多個分隔符條件。

例如, "a||b|||c||||d"可以標記化用split("\\|{2,}");用所得陣列[a,b,c,d]