2011-12-21 61 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]