示例:

StringTokenizer st = new StringTokenizer(key, ",", false);

while (st.hasMoreTokens()) {
            if (userAgent.indexOf(st.nextToken()) != -1) {
                return true;
            }

}

StringTokenizer 只有三个构造方法

1. StringTokenizer(String str) :被分割对象str,分隔符采取默认分割,Java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。默认的话,所有的分隔符都会同时起作用。
   2. StringTokenizer(String str, String delim) :分隔符不采用默认,提供一个指定的分隔符。
   3. StringTokenizer(String str, String delim, boolean returnDelims) :指定一个特定的分隔符,同时,指定是否返回分隔符。如果是true,分隔符将被作为一个token返回。

API原文描述:If the returnDelims flag is true, then the delimiter characters are also returned as tokens. Each delimiter is returned as a string of length one. If the flag isfalse, the delimiter characters are skipped and only serve as separators between tokens.

方法也不多,只有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方法在抛异常以前还能被调用的次数,当前索引不增加。

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

方法:

boolean hasMoreTokens()

boolean hasMoreElements()

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

方法:

Object nextElement()

String nextToken()

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

还有一个方法:

 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

转自:http://blog.csdn.net/laoma4102/article/details/7084394

StringTokenizer字符串分解器的更多相关文章

  1. StringTokenizer(字符串分隔解析类型)

    java.util.StringTokenizer 功效:将字符串以定界符为界,分析为一个个的token(可理解为单词),定界符可以自己指定.  1.构造函数. 1. StringTokenizer( ...

  2. POCO库——Foundation组件之核心Core

    核心Core: Version.h:版本控制信息,宏POCO_VERSION,值格式采用0xAABBCCDD,分别代表主版本.次版本.补丁版本.预发布版本: Poco.h:简单地包含了头文件Found ...

  3. Spring源码分析——BeanFactory体系之接口详细分析

    Spring的BeanFactory的继承体系堪称经典.这是众所周知的!作为Java程序员,不能错过! 前面的博文分析了Spring的Resource资源类Resouce.今天开始分析Spring的I ...

  4. Java复习随笔

    1.StringTokenizer str = new StringTokenizer("字符串"); str.countTokns();   //可得出字符串非连续的个数(可用于 ...

  5. JAVA基础5——与String相关的系列(2)

    差异点比较 String使用+直接拼接 这种情况需要分两种情况来讨论: 1. 都是确定的字符串常量之间进行的+号拼接的时候,由于在编译器就可以确定其具体值了,所以编译器在编译期的时候就会把这些常量拼接 ...

  6. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  7. Spring 之 BeanFactory 源码 - 接口分析

    一.BeanFactory的基本类体系结构(接口为主):

  8. java字符串分解 StringTokenizer用法(比split()方法效率高)

    Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokenizer可以帮你. int countTokens ...

  9. Java StringTokenizer分割字符串

    除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串: 不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被 ...

随机推荐

  1. 1.3 LVM条带化

    1.什么是条带化 磁盘冲突:当多个进程同时访问一个磁盘时,可能会出现磁盘冲突.磁盘系统对访问次数(每秒的IOPS)和数据传输速率(读写速率,TPS)有限制.当达到这些限制时,后面需要访问磁盘的进程就需 ...

  2. Navicat 12.1激活

    去官网下载 https://www.navicat.com.cn/download/navicat-premium 然后下载这个破解包 第一个是整合了 navicat121_premium_cs_x6 ...

  3. mysql慢查询及查询优化

    mysql默认是没有开启慢查询的 1 查看慢查询的配置状态 show variables like 'slow_query%'; slow_query_log 慢查询开启状态 slow_query_l ...

  4. IntelliJ IDEA 常用快捷键 之 Windows 版

    IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE 支持.各类版本 ...

  5. Listener学习

    监听器Listener用于监听web应用中某些对象.信息的创建.销毁.增加,修改,删除等动作的发生,然后作出相应的响应处理.当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法.常用于统计 ...

  6. Python之路【第十八篇】:前端HTML

    一.前端概述 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind( ...

  7. LeetCode 5198. 丑数 III(Java)容斥原理和二分查找

    题目链接:5198. 丑数 III 请你帮忙设计一个程序,用来找出第 n 个丑数. 丑数是可以被 a 或 b 或 c 整除的 正整数. 示例 1: 输入:n = 3, a = 2, b = 3, c ...

  8. Linux 线程间的同步与互斥

    在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性. 线程同步: 条件变量 为什么使用条件变量? 对临界资源的时序可控性,条件满足会通知其他等待操作临界资源的线程, ...

  9. go包管理

    摘自: http://blueskykong.com/2019/02/18/go-dep-1/ https://www.cnblogs.com/apocelipes/p/10295096.html#v ...

  10. 老司机的自信,让 CDN 加速再加速

    CDN 的存在,加快了用户的访问速度,使用户可以在不提升网速下,获得更好的访问体验.购物时,可以更快的显示商品图片:看电影时,可以随意的拖拽浏览.如果把数据资源比作是一件件包裹,那么用户的带宽就像是一 ...