模块  java.base
软件包  java.util

Class StringTokenizer

  • 实现的所有接口
    Enumeration<Object>

    public class StringTokenizerextends Objectimplements 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是一个遗留类,出于兼容性原因而保留,但在新代码中不鼓励使用它。 建议任何寻求此功能使用split的方法String或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
    另请参见:
    StreamTokenizer
    • 构造方法详细信息

      • StringTokenizer

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

        如果returnDelims标志为true ,则分隔符字符也将作为标记返回。 每个分隔符都以长度为1的字符串形式返回。 如果标志为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
    • 方法详细信息

      • hasMoreTokens

        public boolean hasMoreTokens()
        测试此tokenizer的字符串中是否有更多可用的标记。 如果此方法返回true ,则后续调用nextToken带参数将成功返回标记。
        结果
        true当且仅当当前位置后字符串中至少有一个令牌时; 否则为false
      • nextToken

        public String nextToken()
        返回此字符串标记生成器的下一个标记。
        结果
        来自此字符串标记生成器的下一个标记。
        异常
        NoSuchElementException - 如果此tokenizer的字符串中没有其他标记。
      • nextToken

        public String nextToken​(String delim)
        返回此字符串tokenizer的字符串中的下一个标记。 首先,由此StringTokenizer对象认为是分隔符的字符集StringTokenizer改为字符串delim中的字符。 然后返回当前位置后字符串中的下一个标记。 当前位置超出了识别的令牌。 此次调用后,新的分隔符集仍然是默认值。
        参数
        delim - 新的分隔符。
        结果
        切换到新的分隔符集后,下一个标记。
        异常
        NoSuchElementException - 如果此tokenizer的字符串中没有其他标记。
        NullPointerException - 如果delim是 null
      • hasMoreElements

        public boolean hasMoreElements()
        返回与hasMoreTokens方法相同的值。 它的存在使得该类可以实现Enumeration接口。
        Specified by:
        hasMoreElements接口 Enumeration<Object>
        结果
        true如果有更多的令牌; 否则为false
        另请参见:
        EnumerationhasMoreTokens()
      • nextElement

        public Object nextElement()
        返回与nextToken方法相同的值,但其声明的返回值为Object而不是String 它的存在使得该类可以实现Enumeration接口。
        Specified by:
        nextElement ,界面 Enumeration<Object>
        结果
        字符串中的下一个标记。
        异常
        NoSuchElementException - 如果此tokenizer的字符串中没有其他标记。
        另请参见:
        EnumerationnextToken()
      • countTokens

        public int countTokens()
        计算在生成异常之前可以调用此标记生成器的nextToken方法的次数。 目前的立场没有提前。
        结果
        使用当前分隔符集保留在字符串中的标记数。
        另请参见:
        nextToken()