关于StringTokenizer使用详解

        近日在项目中遇到一个使用StringTokenizer进行字符串分割的操作,以前按一定分隔符分割字符串都是用String[] result = string.split("分隔符"),然后遍历result得到逐个分割后的元素。既然java给我提供了现有的类,我们何不使用呢。现在把这个类的方法研究下。

首先,StringTokenizer有三个常用的构造方法

         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对象,并提供一个指定的分隔符,同时,返回分指定的分隔符。

其次,StringTokenizer类常用的方法如下:

  int     countTokens():返回nextToken方法被调用的次数。或者说字符串按照分隔符分割后的元素个数。
boolean   hasMoreElements():返回是否还有分隔符。
boolean   hasMoreTokens():同上
String  nextToken():返回从当前位置到下一个分隔符的字符串。
Object      nextElement():结果同上,除非返回的是Object而不是String
String       nextToken(String delim):同nextToken(),以指定的分隔符返回结果

其实我们常用的也就是上面加粗的三个方法。

现在进行测试如下:

import java.util.StringTokenizer;

public static  void stringTokenTest(){
        
        String str1 = "this is a book very good";
        //默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”
        StringTokenizer tokenizer = new StringTokenizer(str1);
        // 遍历并输出每个标记
        while (tokenizer.hasMoreTokens()) {
            System.err.println("result1:" + tokenizer.nextToken());
        }

        String str2 = "this#is#a#book#very#good";
        //指定分隔符
        StringTokenizer tokenizer2 = new StringTokenizer(str2, "#");
        // 遍历并输出每个标记
        while (tokenizer2.hasMoreTokens()) {
            System.err.println("result2:" + tokenizer2.nextToken());
        }


        String str3 = "this#is a#book=very=good";
        //指定多个分隔符
        StringTokenizer tokenizer3 = new StringTokenizer(str3, " #=");
        // 遍历并输出每个标记
        while (tokenizer3.hasMoreTokens()) {
            System.err.println("result3:" + tokenizer3.nextToken());
        }

        String str4 = "this#is#a#book#very#good";
        //指定单个分隔符并返回分隔符
        StringTokenizer tokenizer4 = new StringTokenizer(str2, "#",true);
        // 遍历并输出每个标记
        while (tokenizer4.hasMoreTokens()) {
            System.err.println("result4:" + tokenizer4.nextToken());
        }

        String str5 = "this#is a#book=very=good";
        //指定多个分隔符
        StringTokenizer tokenizer5 = new StringTokenizer(str3, " #=",true);
        // 遍历并输出每个标记
        while (tokenizer5.hasMoreTokens()) {
            System.err.println("result5:" + tokenizer5.nextElement());
        }



    }

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路奔跑1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值