博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记--StringTokenizer的使用
阅读量:6843 次
发布时间:2019-06-26

本文共 1930 字,大约阅读时间需要 6 分钟。

hot3.png

String.split方法很常用,用于切割字符串,split传入的参数是正则表达式,它的内部是每次都comiple正则表达式,再调用Pattern.split方法:

public String[] split(String regex, int limit) {    return Pattern.compile(regex).split(this, limit);}public String[] split(String regex) {    return split(regex, 0);}

 因此,如果你调用String.split非常频繁的话,每次都重新编译正则表达式的代价很高,性能会受到很大影响,

此时最好自己预编译Pattern,再调用Pattern.split方法为妙。

String []items=line.split(" ");//替代为static Pattern pattern=Pattern.compile(" ");String []items=pattern.split(line,0);

注意:如果你根本没想过用正则来split的话,StringTokenizer性能更高

 

StringTokenizer是一个用来分隔String的应用类

1. 构造函数。

1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。2. StringTokenizer(String str, String delim) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。3. StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。

2.  方法简介

int       countTokens():返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量

boolean   hasMoreElements():返回是否还有分隔符。
boolean   hasMoreTokens():同上
String  nextToken():返回从当前位置到下一个分隔符的字符串。
Object      nextElement():结果同上,除非生命返回的是Object而不是String
String       nextToken(String delim):同nextToken(),以指定的分隔符返回结果

例:

String s = new String("This is a test string");StringTokenizer st = new StringTokenizer(s);System.out.println( "Token Total: " + st.countTokens() );while( st.hasMoreElements() ){    System.out.println(st.nextToken());}

例2:

String str = "100|66,55:200|567,90:102|43,54";StringTokenizer strToke = new StringTokenizer(str, ":,|");// 默认不打印分隔符// StringTokenizer strToke=new StringTokenizer(str,":,|",true);//打印分隔符// StringTokenizer strToke=new StringTokenizer(str,":,|",false);//不打印分隔符while(strToke.hasMoreTokens()){    System.out.println(strToke.nextToken());}
 

注意,StringTokenizer的分隔符不需要使用转义字符

3.与split的区别

String.Split()使用正则表达式,而StringTokenizer的只是使用逐字分裂的字符。

如果不用正则表达式(StringTokenizer也不能使用正则表达式),StringTokenizer在截取字符串中的效率最高。

 

转载于:https://my.oschina.net/dylan2hdf/blog/1501276

你可能感兴趣的文章