Module java.base
Package java.util

Class StringTokenizer

java.lang.Object
java.util.StringTokenizer
所有已实现的接口:
Enumeration<Object>

public class StringTokenizer extends Object implements Enumeration<Object>
字符串标记类允许应用程序将字符串分解为标记。标记化方法比StreamTokenizer类使用的方法简单得多。 StringTokenizer方法不区分标识符、数字和带引号的字符串,也不识别和跳过注释。

分隔符集(分隔标记的字符)可以在创建时或每个标记的基础上指定。

StringTokenizer的实例行为有两种方式,取决于是否使用值为truefalsereturnDelims标志创建:

  • 如果标志为false,分隔符字符用于分隔标记。标记是一系列不是分隔符的连续字符。
  • 如果标志为true,分隔符字符本身被视为标记。因此,标记要么是一个分隔符字符,要么是一系列不是分隔符的连续字符。

StringTokenizer对象在要标记的字符串内部维护当前位置。一些操作会将此当前位置推进到处理的字符之后。

通过从用于创建StringTokenizer对象的字符串中获取子字符串来返回标记。

以下是标记器的使用示例。 代码:

     StringTokenizer st = new StringTokenizer("this is a test");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }
 

将输出以下内容:

     this
     is
     a
     test
 

StringTokenizer是一个保留的遗留类,出于兼容性原因保留,尽管不建议在新代码中使用。建议寻求此功能的任何人改用Stringsplit方法或java.util.regex包。

以下示例说明了如何使用String.split方法将字符串分解为其基本标记:

     String[] result = "this is a test".split("\\s");
     for (int x=0; x<result.length; x++)
         System.out.println(result[x]);
 

将输出以下内容:

     this
     is
     a
     test
 
自版本:
1.0
参见:
  • Constructor Details

    • StringTokenizer

      public StringTokenizer(String str, String delim, boolean returnDelims)
      为指定的字符串构造一个字符串标记器。 delim参数中的所有字符都是用于分隔标记的分隔符。

      如果returnDelims标志为true,则分隔符字符也作为标记返回。每个分隔符都作为由分隔符的一个或两个char组成的字符串返回。如果标志为false,则跳过分隔符字符,分隔符字符仅用作标记之间的分隔符。

      请注意,如果delimnull,此构造函数不会引发异常。但是,尝试在生成的StringTokenizer上调用其他方法可能会导致NullPointerException

      参数:
      str - 要解析的字符串。
      delim - 分隔符。
      returnDelims - 指示是否将分隔符作为标记返回的标志。
      抛出:
      NullPointerException - 如果str为null
    • StringTokenizer

      public StringTokenizer(String str, String delim)
      为指定的字符串构造一个字符串标记器。 delim参数中的字符是用于分隔标记的分隔符。 分隔符字符本身不会被视为标记。

      请注意,如果delimnull,此构造函数不会引发异常。但是,尝试在生成的StringTokenizer上调用其他方法可能会导致NullPointerException

      参数:
      str - 要解析的字符串。
      delim - 分隔符。
      抛出:
      NullPointerException - 如果str为null
    • StringTokenizer

      public StringTokenizer(String str)
      为指定的字符串构造一个字符串标记器。 标记器使用默认的分隔符集,即" \t\n\r\f":空格字符、制表符、换行符、回车符和换页符。 分隔符字符本身不会被视为标记。
      参数:
      str - 要解析的字符串。
      抛出:
      NullPointerException - 如果str为null
  • Method Details

    • hasMoreTokens

      public boolean hasMoreTokens()
      测试此标记器的字符串中是否有更多标记可用。 如果此方法返回true,则随后调用不带参数的nextToken将成功返回一个标记。
      返回:
      如果在当前位置之后的字符串中至少有一个标记,则返回true;否则返回false
    • nextToken

      public String nextToken()
      返回此字符串标记器的下一个标记。
      返回:
      此字符串标记器的下一个标记。
      抛出:
      NoSuchElementException - 如果此标记器的字符串中没有更多标记。
    • nextToken

      public String nextToken(String delim)
      返回此字符串标记器的字符串中的下一个标记。 首先,此StringTokenizer对象认为是分隔符的字符集更改为字符串delim中的字符。 然后返回当前位置之后的字符串中的下一个标记。 当前位置被推进到识别的标记之后。 此调用后,新的分隔符集仍然是默认的。
      参数:
      delim - 新的分隔符。
      返回:
      切换到新的分隔符集后的下一个标记。
      抛出:
      NoSuchElementException - 如果此标记器的字符串中没有更多标记。
      NullPointerException - 如果delim为null
    • hasMoreElements

      public boolean hasMoreElements()
      返回与hasMoreTokens方法相同的值。 它存在是为了使此类能够实现Enumeration接口。
      指定者:
      hasMoreElements 在接口 Enumeration<Object>
      返回:
      如果有更多标记,则返回true;否则返回false
      参见:
    • nextElement

      public Object nextElement()
      返回与nextToken方法相同的值,只是其声明的返回值为Object而不是String。 它存在是为了使此类能够实现Enumeration接口。
      指定者:
      nextElement 在接口 Enumeration<Object>
      返回:
      字符串中的下一个标记。
      抛出:
      NoSuchElementException - 如果此标记器的字符串中没有更多标记。
      参见:
    • countTokens

      public int countTokens()
      计算在生成异常之前可以调用此标记器的nextToken方法的次数。 当前位置不会被推进。
      返回:
      使用当前分隔符集中剩余的标记数。
      参见: