Module  java.base
软件包  java.util

Class StringTokenizer

  • All Implemented Interfaces:
    Enumeration<Object>


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

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

    StringTokenizer一个实例以两种方式之一表现,具体取决于它是使用truefalsereturnDelims标记创建的:

    • 如果标志为false ,则分隔符用于分隔标记。 令牌是不是分隔符的连续字符的最大序列。
    • 如果标志是true ,则分隔符字符本身被认为是令牌。 因此,令牌是一个定界符字符,或不是分隔符的连续字符的最大序列。

    A StringTokenizer对象内部维护要标记化的字符串中的当前位置。 某些操作会将当前位置提前处理。

    通过使用用于创建StringTokenizer对象的字符串的子字符串来返回令牌。

    以下是使用tokenizer的一个示例。 代码:

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

    打印以下输出:

         this
         is
         a
         test
     

    StringTokenizer是由于兼容性原因而保留的遗留类,尽管在新代码中不鼓励使用它。 建议任何寻求此功能的人都可以使用splitString或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)
        为指定的字符串构造一个字符串tokenizer。 delim参数中的所有字符都是用于分隔标记的分隔符。

        如果returnDelims标志为true ,则分隔符字符也作为令牌返回。 每个分隔符作为长度为1的字符串返回。 如果标志是false ,则会跳过分隔符,只能在令牌之间作为分隔符。

        请注意,如果delimnull ,则此构造函数不会引发异常。 然而,试图调用上所产生的其他方法StringTokenizer可能导致NullPointerException

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

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

        请注意,如果delimnull ,则此构造函数不会引发异常。 然而,试图调用上所产生的其他方法StringTokenizer可能导致NullPointerException

        参数
        str - 要解析的字符串。
        delim - 分隔符。
        异常
        NullPointerException - 如果str是 null
      • StringTokenizer

        public StringTokenizer​(String str)
        为指定的字符串构造一个字符串tokenizer。 标记器使用默认分隔符集,即" \t\n\r\f" :空格字符,制表符,换行符,回车字符和换页符。 分隔符字符本身不会被视为令牌。
        参数
        str - 要解析的字符串。
        异常
        NullPointerException - 如果str是 null
    • 方法详细信息

      • hasMoreTokens

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

        public String nextToken​()
        从此字符串标记器返回下一个令牌。
        结果
        来自此字符串标记器的下一个令牌。
        异常
        NoSuchElementException - 如果这个tokenizer的字符串中没有更多的令牌。
      • nextToken

        public String nextToken​(String delim)
        返回此字符串tokenizer字符串中的下一个令牌。 首先,被这个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​()
        计算这个tokenizer的nextToken方法在生成异常之前可以调用的次数。 当前位置不提前。
        结果
        使用当前分隔符集合在字符串中剩余的令牌数。
        另请参见:
        nextToken()