【Java】StringTokenizer类的使用方法

StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。

1、构造函数

StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”

StringTokenizer(String str, String delim):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。

StringTokenizer(String str, String delim, boolean returnDelims):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。

2、方法

所有方法均为public;

书写格式:[修饰符] <返回类型><方法名([参数列表])>

如:static int parseInt(String s)表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。

1. int countTokens():返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量(例2)。

2. boolean hasMoreTokens():返回是否还有分隔符。

3. boolean hasMoreElements() :结果同2。

4. String nextToken():返回从当前位置到下一个分隔符的字符串。

5. Object nextElement():结果同4。

6. String nextToken(String delim):与4类似,以指定的分隔符返回结果。

示例1

public static void main(String[] args) {
    String s = new String("The Java platform is the ideal platform for network computing");
    StringTokenizer st = new StringTokenizer(s);
    System.out.println("Token Total: " + st.countTokens());
    while (st.hasMoreElements()) {
        System.out.println(st.nextToken());
    }
}

结果
Token Total: 10
The
Java
platform
is
the
ideal
platform
for
network
computing

示例2

public static void main(String[] args) {
    String s = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
    StringTokenizer st = new StringTokenizer(s, "=", true);
    System.out.println("Token Total: " + st.countTokens());
    while (st.hasMoreElements()) {
        System.out.println(st.nextToken());
    }
}

结果
Token Total: 19
The
=
Java
=
platform
=
is
=
the
=
ideal
=
platform
=
for
=
network
=
computing

示例3

public static void main(String[] args) {
    String s = new String("The Java platform is the ideal platform for network computing");
    StringTokenizer st = new StringTokenizer(s);
    System.out.println("Token Total: " + st.countTokens());
    while (st.hasMoreElements()) {
        System.out.println("-----------------------");
        // 返回从当前位置到下一个分隔符的字符串。
        System.out.println(st.nextToken());
        // System.out.println(st.nextToken("i")); //以指定的分隔符返回结果 默认为“ ”;
    }
    // 如果上面的循环执行完nextToken()或nextElement()方法,下面的标记将不执行,也就是说不进入while循环
    while (st.hasMoreTokens()) {
        System.out.println("=======");
        System.out.println(st.nextElement());
    }

    String s2 = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
    // 构造方法中第一个参数表示字符串,第二参数分隔符,第三参数表示是否返回字符串
    StringTokenizer st2 = new StringTokenizer(s2, "=", true);
    System.out.println("Token Total: " + st2.countTokens());
    while (st2.hasMoreElements()) {
        System.out.println(st2.nextToken());
    }
}

结果
Token Total: 10
-----------------------
The
-----------------------
Java
-----------------------
platform
-----------------------
is
-----------------------
the
-----------------------
ideal
-----------------------
platform
-----------------------
for
-----------------------
network
-----------------------
computing
Token Total: 19
The
=
Java
=
platform
=
is
=
the
=
ideal
=
platform
=
for
=
network
=
computing

StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的split 方法或 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
  • 从以下版本开始:

  • JDK1.0

  • 另请参见:

  • StreamTokenizer

  • 构造方法摘要
    StringTokenizer(String str)
    为指定字符串构造一个 string tokenizer。

    StringTokenizer(String str, String delim)
    为指定字符串构造一个 string tokenizer。

    StringTokenizer(String str, String delim, boolean returnDelims)
    为指定字符串构造一个 string tokenizer。

    方法摘要
    int countTokens()
    计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数。
    boolean hasMoreElements()
    返回与 hasMoreTokens 方法相同的值。
    boolean hasMoreTokens()
    测试此 tokenizer 的字符串中是否还有更多的可用标记。
    Object nextElement()
    除了其声明返回值是 Object 而不是 String 之外,它返回与 nextToken 方法相同的值。
    String nextToken()
    返回此 string tokenizer 的下一个标记。
    String nextToken(String delim)
    返回此 string tokenizer 的字符串中的下一个标记。
    从类 java.lang.Object 继承的方法
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    构造方法详细信息

    StringTokenizer

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

      如果 returnDelims 标志为 true,则分隔符字符也作为标记返回。每个分隔符都作为一个长度为 1 的字符串返回。如果标志为 false,则跳过分隔符,只是用作标记之间的分隔符。

      注意,如果 delim 为 null,则此构造方法不抛出异常。但是,尝试对得到的 StringTokenizer 调用其他方法则可能抛出NullPointerException。

      • 参数:

      • str - 要解析的字符串。

      • delim - 分隔符。

      • returnDelims - 指示是否将分隔符作为标记返回的标志。

      • 抛出:

      • NullPointerException- 如果 str 为 null

    StringTokenizer

    public StringTokenizer(String str, String delim)
    • 为指定字符串构造一个 string tokenizer。delim参数中的字符都是分隔标记的分隔符。分隔符字符本身不作为标记。

      注意,如果 delim 为 null,则此构造方法不抛出异常。但是,尝试对得到的 StringTokenizer 调用其他方法则可能抛出NullPointerException。

      • 参数:

      • str - 要解析的字符串。

      • delim - 分隔符。

      • 抛出:

      • NullPointerException- 如果 str 为 null

    StringTokenizer

    public StringTokenizer(String str)
    • 为指定字符串构造一个 string tokenizer。tokenizer 使用默认的分隔符集 " \t\n\r\f",即:空白字符、制表符、换行符、回车符和换页符。分隔符字符本身不作为标记。

    方法详细信息

    hasMoreTokens

    public boolean hasMoreTokens()
    • 测试此 tokenizer 的字符串中是否还有更多的可用标记。如果此方法返回 true,那么后续调用无参数的 nextToken 方法将成功地返回一个标记。

      • 返回:

      • 当且仅当该字符串中当前位置后至少有一个标记时才为 true;否则为 false

    nextToken

    public String nextToken()
    • 返回此 string tokenizer 的下一个标记。

      • 返回:

      • 此 string tokenizer 的下一个标记。

      • 抛出:

      • NoSuchElementException- 如果此 tokenizer 的字符串中没有更多标记。

    nextToken

    public String nextToken(String delim)
    • 返回此 string tokenizer 的字符串中的下一个标记。首先,字符集被更改为字符串 delim 中的字符,该字符集被认为是 StringTokenizer对象的分隔符。接着返回字符串中当前位置之后的下一个标记。当前位置被提前到所识别的标记前。进行此调用后新的分隔符集仍然保持默认值。

      • 参数:

      • delim - 新的分隔符。

      • 返回:

      • 转换到新的分隔符集后的下一个标记。

      • 抛出:

      • NoSuchElementException- 如果此 tokenizer 的字符串中没有更多标记。

      • NullPointerException- 如果 delim 为 null

    hasMoreElements

    public boolean hasMoreElements()
    • 返回与 hasMoreTokens 方法相同的值。它的存在使得此类可以实现 Enumeration接口。

      • 返回:

      • 如果有更多标记,则为 true;否则为 false

      • 另请参见:

      • EnumerationhasMoreTokens()

    nextElement

    public Object nextElement()
    • 除了其声明返回值是 Object 而不是 String 之外,它返回与 nextToken 方法相同的值。它的存在使得此类可以实现 Enumeration 接口。

      • 返回:

      • 字符串中的下一个标记。

      • 抛出:

      • NoSuchElementException- 如果此 tokenizer 的字符串中没有更多标记。

      • 另请参见:

      • EnumerationnextToken()

    countTokens

    public int countTokens()
    • 计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数。当前位置没有提前。

      • 返回:

      • 使用当前分隔符集的字符串中剩余的标记数。

      • 另请参见:

      • nextToken()


赞(52) 打赏
未经允许不得转载:优客志 » JAVA开发
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏