必威体育Betway必威体育官网
当前位置:首页 > IT技术

StringTokenizer类与String.split()的区别

时间:2019-10-19 13:10:00来源:IT技术作者:seo实验室小编阅读:82次「手机版」
 

stringtokenizer

一、stringtokenizer:字符串分隔解析类型

属于:java.util包。

1、构造函数

1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。

2. StringTokenizer(String str, String delim) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。

3. StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。

2、方法。

说明:

1. 所有方法均为public;

2. 书写格式:[修饰符] <返回类型> <方法名([参数列表])>

如:

static int parseInt(String s) 表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。

1. int countTokens() :返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量(例2)。

2. boolean hasMoreTokens() :返回是否还有分隔符。

3. boolean hasMoreElements() :结果同2。

4. String nextToken() :返回从当前位置到下一个分隔符的字符串。

5. Object nextElement() :结果同4。

6. String nextToken(String delim) :与4类似,以指定的分隔符返回结果。

二、split 与 StringTokenizer 的小小区别


 
  1. import java.util.StringTokenizer;

  2. public class StringTokenizerDemo

  3. {

  4. public static void main(String args[])

  5. {

  6. String str="100|66,55:200|567,90:102|43,54";

  7. String abc="A|B|C|D";

  8. StringTokenizer strtoke=new StringTokenizer(str,":");//默认不打印分隔符

  9. //StringTokenizer strToke=new StringTokenizer(str,":",true);//打印分隔符

  10. //StringTokenizer strToke=new StringTokenizer(str,":",false);//不打印分隔符

  11. int size=strToke.countTokens();//3 & 5

  12. System.out.println("strToke count = "+size);

  13. while(strToke.hasMoreElements())

  14. {

  15. System.out.println(strToke.nextToken());

  16. //System.out.println(strToke.nextElement()); //效果同上

  17. }

  18. //String[] str_abc=str.split("\\|");//结果与StringTokenizer一样

  19. String[] str_abc=str.split("|");//得到不同的结果

  20. for(int i=0;i<str_abc.length;i++)

  21. {

  22. System.out.println(str_abc[i]);

  23. }

  24. }

  25. }

以上代码说明:同样是分割字符串,对于String.split()方法来说,

直接传入参数"|"不能正确的分割字符串,需先对它进行转义。

而对于StringTokenizer类来说,就没有这个必要。

同样的操作在遇到下列分割符时同样需要:

"+"、"*"、"$"、"\"。

具体原因看第三节。

三、为什么不鼓励使用StringTokenizer。

首先在JAVA 5,6,7中,它不是deprecated的。

从javadoc上看到:

StringTokenizer的是一个被保留,是因为兼容性的原因,不鼓励使用在新的代码中。建议任何人都寻求这种功能使用split或java.util.regex包。

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

相关阅读

String.intern()详细分析,JDK1.8

前言   本文的测试环境是JDK1.8。   String.intern()分析在文中偏后一.创建字符串分析 1.直接使用双引号创建字符串  判断这

js字符串截取函数slice()、substring()、substr()

原文地址为:js字符串截取函数slice()、substring()、substr()摘要在js中字符截取函数有常用的三个slice()、substring()、substr()

StringBuilder重用 清空数据方法

StringBuilder:线程非安全的  StringBuffer:线程安全的  StringBuilder 没有提供clear或empty方法。 清空有3种方法: 1)新生成

String数组的创建

string数组的定义有三种写法: String[] arr = new String[10]; //创建一个长度为10的String 类型数组。 String arr[] = new St

Java开发者如何正确的使用String,StringBuffer,StringBu

通过前面的文章,我们知道String类最大的特点是不可变性,这意味着对String类的任何修改都会新生成一个字符串,比如你执行了String类的

分享到:

栏目导航

推荐阅读

热门阅读