StringTokenizer 类简介
StringTokenizer 类允许应用程序将一个字符串分割为各个标记。该类的方法不区分标识符、数字和带引号的字符串,也不是识别和跳过注释。分隔字符串的分隔符可以在 StringTokenizer 类对象创建时指定,亦可以在每个标记的基础上指定。StringTokenizer 类在创建时,根据标识 returnDelims 的值的不同,该类创建的对象有两种工作方式:
- 若标识为 false ,分隔符被用来分割各个标记。一个标记是不包括分隔符的最大连续字符串。
- 若标识为 true ,则分隔符本身也被认为是标记。此时一个标记要么是分隔符,要么是不包括分隔符的最大连续字符串。
StringTokenizer 类在创建对象时,若没有指定分隔符,则该对象默认使用空白字符、制表符、换行符和回车符作为默认分隔符。
StringTokenizer 类实现了枚举接口(原因未知),故该类需要实现枚举接口的两个方法:hasMoreTokens()和nextToken()。
一个 StringTokenizer 类的对象在字符串标记化的过程中会维持一个当前位置,该对象的一些操作能够向前移动当前位置。
StringTokenizer 类是一个遗留类,为了兼容性而保留下来的。但是在新的代码中不鼓励使用该类来分隔字符串。若用户向分隔字符串,则推荐使用String对象的 split()或者使用正则表达式相关的工具类来实现。
示例
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
函数
构造函数
- StringTokenizer(String str, String delim, boolean returnDelims)根据给定的str和delim构造一个对象,delim字符串中的每一个字符都是分隔符。若标识returnDelims为true,则分隔符同样会作为标记返回,每个分隔符都是长度为1的字符串;反之,分隔符仅仅用来分隔字符串。
- StringTokenizer(String str, String delim)根据给定的str和delim构造一个对象。分隔符字符不会被看作是需要返回的标记。若delim为空,该构造函数不会抛出异常信息,但是很有可能在调用该对象的其他函数的时候会抛出异常信息。
- StringTokenizer(String str)根据给定的str来构造一个对象,使用默认的分隔符来分隔字符串。
函数
- boolean hasMoreTokens()若标记化的字符串中含有更多可用的标记,那么返回true;反之返回false。
- String nextToken()从标记化的字符串中返回下一个标记。
- String nextToken(String delim)首先分隔符字符集会变成delim指定的分隔符,然后当前位置之后的标记被返回。在调用该函数后,新的分隔符集会变成默认的。
- boolean hasMoreElements()与 hasMoreTokens ()相同工作。该函数的存在是由于 StringTokenizer 类实现了枚举接口。
- Object nextElement()与nextToken()相同工作,只是该函数返回的是 Object 对象而已。该函数的存在也是由于 StringTokenizer 类实现了枚举接口。
- int countTokens()计算出在 nextToken ()方法抛出异常信息之前,它能够被调用多少次。调用该函数并不会导致当前位置向前移动。
总结
StringTokenizer 是 JDK 早期设计的一个类,为了保证版本的兼容性,该类一直没有被删除。可以感觉的出来,使用该类进行字符串的分隔没有正则表达式那样方便。笔者之所以查看该类的相关 API ,主要原因是之前在网上查看 Scanner 相关介绍时有博主提起过,故春节在家无聊就闲来看看。