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 plaincopy 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

StringTokenizer的用法详解相关推荐

  1. BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)

    一.简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更 ...

  2. python argv 详解_Python3 sys.argv[ ]用法详解

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可 ...

  3. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  4. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  5. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  6. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  7. php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy

    Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...

  8. LayoutInflater的inflate函数用法详解

    LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...

  9. Ext.Net学习笔记22:Ext.Net Tree 用法详解

    上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat="server"><Root> ...

最新文章

  1. “网络实名制”的背后
  2. python专科找工作难吗-本人小白,想学python,大专不知道好不好找工作?
  3. DS二叉树--左叶子数量
  4. Android Studio 小技巧/快捷键 合集
  5. Web安全之命令执行漏洞
  6. Linux下运行Jmeter脚本
  7. 抓包(Charles工具入门)
  8. warning: format not a string literal and no format arguments
  9. 选择题_一级造价师选择题的分值是多少
  10. 网络性能测试工具iperf编译记录
  11. 计算机系统应用的书,基于领域本体与上下文感知计算的智能图书-计算机系统应用.PDF...
  12. CSS 如何影响浏览器元素在文档中的排列?
  13. centos7.x-firewalld防火墙常用命令收集
  14. js字体溢出字体变小_可变字体:它们是什么,以及如何使用它们
  15. nero incd V4.3.23.3 序列号
  16. HCIE大师之路——Lab讲解
  17. 阿里云效maven私服
  18. C++公约数和公倍数
  19. 【收藏】2019届互联网大厂公司校招薪资汇总,基本年薪都在20万以上
  20. 解决tensorflow 调用bug Running model failed:Invalid argument: NodeDef mentions attr 'dilations'

热门文章

  1. 直接下载豆瓣fm的全部歌曲py脚本。(json操作)
  2. wine的乱码问题解决
  3. 一键获取隐藏Wi-Fi SSID:利用Python和Scapy发现隐藏无线热点
  4. 替代netstat的命令之一【ss】 使用实例
  5. 软件管理测试工具-ALM/QC
  6. 对智博教育的midia-class(奥义多媒体教室)(0ss-midia-class)的破解①(共两部分)
  7. android数据库工具库,android 数据库工具种MyDbHelper
  8. BZOJ 4627: [BeiJing2016]回转寿司 cdq
  9. JS截取指定字符串到指定字符串之间的内容
  10. 12306官方火车票各种Api接口