StringTokenizer的用法详解

StringTokenizer类:根据自定义字符为分界符进行拆分,并将结果进行封装提供对应方法进行遍历取值,StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释;该方法用途类似于split方法,只是对结果进行了封装;

StringTokenizer的三个构造方法:

1.StringTokenizer(String str) :被分割对象str,分隔符采取默认分割,Java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。默认的话,所有的分隔符都会同时起作用。
源码:
public StringTokenizer(String str) {
this(str, ” \t\n\r\f”, false);
}

实例:

[java]  view plain  copy
 print ?
  1. public static void main(String[] args) {  
  2.  StringTokenizer st = new StringTokenizer("www ooobj com");  
  3.  while(st.hasMoreElements()){  
  4.  System.out.println("Token:" + st.nextToken());  
  5.  }  
  6.  }  

输出:
Token:www
Token:ooobj
Token:com

2.StringTokenizer(String str, String delim):分隔符不采用默认,提供一个指定的分隔符。

3.StringTokenizer(String str, String delim, boolean returnDelims):指定一个特定的分隔符,同时,指定是否返回分隔符。如果是true,分隔符将被作为一个token返回。

实例:

 public static void main(String[] args) {  

  StringTokenizer st = new StringTokenizer("www.ooobj.com", ".", true);  

  while(st.hasMoreElements()){  

  System.out.println("Token:" + st.nextToken());  

  }  

  } 
输出:
Token:www
Token:.
Token:ooobj
Token:.
Token:com

方法有6个:(所有的方法都是public型)    ·

int countTokens()  

   对于这个方法API的描述是这样的:Calculates the number of times that this tokenizer'snextToken method can be called before it generates an exception. The current position is not advanced. 

  它说计算nextToken方法在抛异常以前还能被调用的次数,当前索引不增加。

 其实就是说还有几个元素可以被遍历。返回的是 当前可以被访问的元素的个数。


方法1:用来判断当前还有没有可以遍历的元素

   boolean hasMoreTokens(); //判断字符串中是含还有token 

   boolean hasMoreElements();

方法2:用来获得当前的元素token,一个返回String类型,一个返回Object类型

   Object nextElement();//除返回结果类型外,其返回与 nextToken 方法相同的值

   String nextToken();//StringTokenizer对象中的下一个token。 

方法3:

 String nextToken(String delim)

 返回当前索引开始,指定分隔符的下一个token。实际返回的是索引当前位置到下一个delim出现为止所有的字符,见例子。

 无法想想出这个方法在什么情况下使用。


StringTokenizer test = new StringTokenizer("J-PHONE,Vodafone,SoftBank",",");

while(test.hasMoreTokens()){
System.out.println("count0="+test.countTokens());
System.out.println("carry"+test.nextToken());
System.out.println("count1="+test.countTokens());
//System.out.println("  " + test.nextToken("*"));
}

输出结果:

count0=3
carryJ-PHONE
count1=2
count0=2
carryVodafone
count1=1
count0=1
carrySoftBank
count1=0


如果代码换成element:

while(test.hasMoreElements()){
System.out.println("count0="+test.countTokens());
System.out.println("obj" + test.nextElement());
System.out.println("count1="+test.countTokens());
}

输出的结果是一样:

count0=3
objJ-PHONE
count1=2
count0=2
objVodafone
count1=1
count0=1
objSoftBank
count1=0


但是 需要注意是nextElement()返回是对象类型,不是String类型,需要根据需要转化下


还要说一个StringTokenizer比较不好的地方,就是她的索引无法返回,一旦nextToken 就不能返回了,像上面两种写法同时存在的话,只有第一个循环能有数据输出,第二个循环是不能进去的。如果哪位大侠知道返回的方法请赐教。


语句:

System.out.println("count0="+test.countTokens());
System.out.println("obj=" + test.nextElement());
System.out.println("next=" + test.nextToken("*"));
System.out.println("count1="+test.countTokens());

输出结果:

count0=2
obj=J-PHONE
next=,Vodafone
count1=1





  • 17
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java中的StringTokenizer类是一个用于分解字符串的工具类。它允许您将一个字符串分解成多个标记(tokens),并且可以指定分隔符。 StringTokenizer类的构造函数有多个重载形式,其中最常用的是: public StringTokenizer(String str, String delim) 其中,str是要分解的字符串,delim是分隔符。如果不指定分隔符,则默认使用空格、制表符、换行符等空白字符作为分隔符。 StringTokenizer类有三个主要的方法: 1. hasMoreTokens():判断是否还有更多的标记。 2. nextToken():返回下一个标记。 3. countTokens():返回剩余的标记数。 使用StringTokenizer类可以方便地对字符串进行分解和处理,特别是在需要处理大量文本数据时,它可以提高程序的效率。 ### 回答2: java stringtokenizer类是一个基于字符串分隔符的分词器类。一个字符串可以有多个分隔符,而这些分隔符可以是不止一个字符的字符串。它允许程序员按照指定的分隔符对给定的字符串进行分割,返回一个分割后的字符串数组或逐个返回分隔符连接的标记。Java示例中常用的分隔符是空格字符、逗号和冒号。 使用java stringtokenizer类,程序员可以轻松处理字符串,将其分解成若干单词或子字符串。相对于截取字符串的方式,它具有更明确、更灵活、更高效以及更容易调试的特点。 这个类通常以两个参数的构造函数来调用。第一个参数是要分解的字符串,第二个参数是包含要用作分隔符的字符的字符串。在构造函数中,程序员可以选择在分割后返回空白标记,并选择将分隔符作为标记包含在返回的数组或逐个返回的标记中。 如果不使用Java stringtokenizer类,程序员仍可以使用String类和它所包含的substring()方法和indexOf()方法来完成对字符串的分割,但java stringtokenizer类提供了一种更方便和容易使用的方式来处理字符串。 在java中,需要注意的是,java stringtokenizer类在多线程环境下并不是线程安全的。如果多个线程同时使用同一个stringtokenizer实例,则可能会导致不可预期的结果。因此,建议在多线程环境下使用java.util.Scanner类来进行字符串分割。 ### 回答3: java中的StringTokenizer类是一个用于将字符串分解为若干个标记的工具类。它可以将一个字符串根据给定的分隔符分解成多个字符串,也可以将一个字符串根据空格、制表符或换行符等默认分隔符分解成多个字符串,起到了非常方便的作用。 StringTokenizer类的主要方法有三个,分别为构造方法、nextToken()和hasMoreTokens()。其中构造方法有两个重载形式,一种参数是(String str),另外一种参数是(String str,String delimiters),前者将使用默认的分隔符进行字符串分解,而后者则将指定的分隔符用于字符串分解。hasMoreTokens()方法用于判断是否还有标记未被分解,nextToken()方法用于获取下一个标记内容。 使用StringTokenizer类需要结合循环来实现整个字符串的分割,下面是一个使用默认分隔符进行字符串分割的示例代码: ``` String str = "I am a boy"; StringTokenizer st = new StringTokenizer(str); while(st.hasMoreTokens()){ System.out.println(st.nextToken()); } ``` 上述代码会输出以下内容: I am a boy 在使用StringTokenizer类时,需要注意以下几点: 1. 如果字符串中存在多个连续分隔符,StringTokenizer默认将把它们视为一个分隔符,也就是会输出空内容的标记。如果不希望输出空内容的标记,可以使用hasMoreElements()方法代替hasMoreTokens()方法。 2. StringTokenizer类属于遗留API,在Java 1.5之后推荐使用String.split()方法代替。 3. StringTokenizer类是线程不安全的,如果希望在多线程环境下使用,需要做好同步处理。 Java中的StringTokenizer类可以快速地将字符串按照分隔符进行拆分,并且使用起来也非常简单。在一些字符串操作中,StringTokenizer类也极为实用。不过,需要注意的是,由于StringTokenizer类是一个遗留的API,使用时需要注意它的一些限制和安全性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

shujuboke

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

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

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

打赏作者

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

抵扣说明:

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

余额充值