查了下api文档:发现
StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。
既然已经不必提倡,代码尽量不要用这些;还是简单了解下用法:一般是3个方法一起用,迭代:
方法1:
public StringTokenizer(String str, String delim, boolean returnDelims)
如果 returnDelims 标志为 true,则分隔符字符也作为标记返回。每个分隔符都作为一个长度为 1 的字符串返回。如果标志为 false,则跳过分隔符,只是用作标记之间的分隔符。
注意,如果 delim 为 null,则此构造方法不抛出异常。但是,尝试对得到的 StringTokenizer 调用其他方法则可能抛出 NullPointerException。
参数:
str - 要解析的字符串。
delim - 分隔符。
returnDelims - 指示是否将分隔符作为标记返回的标志。
抛出:
NullPointerException - 如果 str 为 null。
方法2:
public String nextToken()
返回此 string tokenizer 的下一个标记。
返回:
此 string tokenizer 的下一个标记。
抛出:
NoSuchElementException - 如果此 tokenizer 的字符串中没有更多标记。
方法3:
public boolean hasMoreElements()
如果有更多标记,则为 true;否则为 false。
一个例子:
StringTokenizer test = new StringTokenizer("aa=cc","=", true);
while(test.hasMoreElements()){
System.out.println(test.nextToken());
}
返回:aa = cc
现在这个方法已经不提倡用了,存在的目的是为了兼容以前的代码:
String 的 split 方法或 java.util.regex 包。
String[] result = "this is a test".split("\\s"); for (int x=0; x<result.length; x++) System.out.println(result[x]);