Java StringTokenizer类解读

StringTokenizer 类简介

StringTokenizer 类允许应用程序将一个字符串分割为各个标记。该类的方法不区分标识符、数字和带引号的字符串,也不是识别和跳过注释。分隔字符串的分隔符可以在 StringTokenizer 类对象创建时指定,亦可以在每个标记的基础上指定。StringTokenizer 类在创建时,根据标识 returnDelims 的值的不同,该类创建的对象有两种工作方式:

  1. 若标识为 false ,分隔符被用来分割各个标记。一个标记是不包括分隔符的最大连续字符串。
  2. 若标识为 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 ()方法抛出异常信息之前,它能够被调用多少次。调用该函数并不会导致当前位置向前移动。

总结

StringTokenizerJDK 早期设计的一个类,为了保证版本的兼容性,该类一直没有被删除。可以感觉的出来,使用该类进行字符串的分隔没有正则表达式那样方便。笔者之所以查看该类的相关 API ,主要原因是之前在网上查看 Scanner 相关介绍时有博主提起过,故春节在家无聊就闲来看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章