Java实用包学习笔记(2)—— StringTokenizer类


位于java.util包中的StringTokenizer类可以将字符串分解为组成它的语言符号(单词)。
分隔字符串。

构造函数

  • StringTokenizer(String str) :使用默认的分隔符来分隔。java默认的分隔符是空格("")、制表符(\t)、换行符(\n)、回车符(\r)。
  • StringTokenizer(String str, String delim) :提供一个指定的分隔符。
  • StringTokenizer(String str, String delim, boolean returnDelims) :提供一个指定的分隔符,同时指定是否返回分隔符。

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

常用方法

  • int countTokens():返回nextToken方法被调用的次数,统计包含单词数
  • boolean hasMoreElements():判断枚举 (Enumeration) 对象中是否还有数据。
  • boolean hasMoreTokens():返回是否还有分隔符。
  • Object nextElement():返回枚举 (Enumeration) 对象的下一个元素。
  • String nextToken():返回从当前位置到下一个分隔符的字符串。
  • String nextToken(String delim):与 5 类似,以指定的分隔符返回结果。

在这里插入图片描述
三种构造方法 + countTokens() +hasMoreTokens() :

import java.util.StringTokenizer;
public class demoStringTokenizer
{
    public static void main(String args[])
    {
    	int o = 0;
        System.out.println("无参构造:");
        StringTokenizer st1 = new StringTokenizer("Hello Runoob How are you", " ");
        System.out.println("调用st1的次数: " + st1.countTokens());
        while (st1.hasMoreTokens())
            System.out.println(++o + ": " + st1.nextToken());
 
        int j = 0 ;
        System.out.println("有参构造:");
        StringTokenizer st2 = new StringTokenizer("JAVA : Code : String", " :");
        System.out.println("调用st2的次数: " + st2.countTokens());
        while (st2.hasMoreTokens()) 
            System.out.println(++j+ ": "+ st2.nextToken());
 
        int i = 0 ;
        System.out.println("有参构造 + 返回分隔符:");
        StringTokenizer st3 = new StringTokenizer("JAVA : Code : String", " :",  true);
        System.out.println("调用st3的次数: " + st3.countTokens());
        while (st3.hasMoreTokens())
        	System.out.println(++i + ": " + st3.nextToken());           
    }
}

结果:
在这里插入图片描述

与String.Split()的区别

StringTokenizer类与String.split()的区别
区别:
同样是分割字符串,对于String.split()方法来说,直接传入参数"|"、"+"、"*"、"$"、"\"不能正确的分割字符串,需先对它进行转义。而StringTokenizer类不需要。

原因
如果你把split和StringTokenizer作比较,区别的String.Split()使用正则表达式,而StringTokenizer的只是使用逐字分裂的字符。(这是第二节出现结果的原因。)所以,如果想更复杂的逻辑比如单个字符(如\ r \ n分割)来标记一个字符串,可以不使用StringTokenizer,而用String.Split() 。

兼容性问题:
首先在JAVA 5,6,7中,它不是deprecated的。StringTokenizer的是一个被保留,是因为兼容性的原因,不鼓励使用在新的代码中。建议使用split或java.util.regex包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值