StringTokenizer
构造函数:
StringTokenizer
(String
str
)
tokenizer 使用默认的分隔符集
" \t\n\r\f"
,即:空白字符、制表符、换行符、回车符和换页符。分隔符字符本身不作为标记。
StringTokenizer
(String
str, String
delim)
StringTokenizer
(String
str, String
delim,
boolean returnDelims
)
delim
参数中的字符都是分隔标记的分隔符,
returnDelims
标志为
true
,则分隔符字符也作为标记返回。
作用与String的split类似,但是要比split高效,并且在以'|'为分隔符分隔字符串时,StringTokenizer不需要转义字符'|'。
StringTokenizer与split比较:
package
com.imageutils;
import java.util.StringTokenizer;public class Test {public static void main(String[] args) {String str = "as|d|f,d|s,f|w|e|g|f|w|e|v|b|b|r|q|e|t|q|e|r|g|a|f|d|b|dn|t|j|rtj,tnyli|op[ry|ujd|n|h|s|rta|ere|fdv|tar|eg|a";splitTest(str);stringTokenizerTest(str);}private static void splitTest(String str) {long time = System.nanoTime();String[] s = str.split("\\|");System.out.println(s.length);System.out.println(System.nanoTime() - time);}private static void stringTokenizerTest(String str) {long time = System.nanoTime();StringTokenizer st = new StringTokenizer(str, ",|", true);System.out.println(st.countTokens());System.out.println(System.nanoTime() - time);}}
结果:40
174651185304710
StringTokenizer(str,
",|"
,
true
)中",|",','和'|'都会作为单个的分隔符来使用。而且,从以上打印出的结果可以明显看出,分隔同一个字符串,split用时1746511,而StringTokenizer用时304710(nanoTime()以纳秒为单位计时,一般用于性能测试,不能像
currenttimemillis()那样
转化日期)。
只是在API文档中最后说到,
StringTokenizer
是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用
String
的
split
方法或 java.util.regex 包。没有找到不鼓励使用的原因。