java 方法 StringTokenizer

一、说在前面

  之前需要使用字符串处理的时候使用的都是split方法,今天通过学习又掌握了一个新的字符串处理方法StringTokenizer,接下来就来总结一下这两种方法的不同和优缺点。

二、具体语法

StringTokenizer

StringTokenizer 构造方法:
1. StringTokenizer(String str) :构造一个用来解析 str 的 StringTokenizer 对象。java 默认的分隔符是空格("")、制表符(	)、换行符(
)、回车符(
)。
2. StringTokenizer(String str, String delim) :构造一个用来解析 str 的 StringTokenizer 对象,并提供一个指定的分隔符。
3. StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析 str 的 StringTokenizer 对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。

StringTokenizer 常用方法:
1. int countTokens():返回nextToken方法被调用的次数。
2. boolean hasMoreTokens():返回是否还有分隔符。
3. boolean hasMoreElements():判断枚举 (Enumeration) 对象中是否还有数据。
4. String nextToken():返回从当前位置到下一个分隔符的字符串。
5. Object nextElement():返回枚举 (Enumeration) 对象的下一个元素。
6. String nextToken(String delim):与 4 类似,以指定的分隔符返回结果。
构建方法和使用方法

Split

java.lang.string.split 

split方法  将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

stringObj.split([separator,[limit]]) 

stringObj  必选项。 要被分解的 String 对象或文字,该对象不会被split方法修改。

separator  可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。 

limit  可选项。该值用来限制返回数组中的元素个数(也就是最多分割成几个数组元素,只有为正数时有影响)

split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。
separator不作为任何数组元素的部分返回。
使用方法

三、比较

  以下内容借鉴于博客https://www.cnblogs.com/jingpeng77/p/9941709.html

import java.util.StringTokenizer;
public class StringTokenizerDemo
{
  public static void main(String args[])
  {
    String str="100|66,55:200|567,90:102|43,54";
    String abc="A|B|C|D";
    StringTokenizer strToke=new StringTokenizer(str,":");//默认不打印分隔符
    //StringTokenizer strToke=new StringTokenizer(str,":",true);//打印分隔符
    //StringTokenizer strToke=new StringTokenizer(str,":",false);//不打印分隔符
    int size=strToke.countTokens();//3 & 5
    System.out.println("strToke count = "+size);
    while(strToke.hasMoreElements())
    {
      System.out.println(strToke.nextToken());
      //System.out.println(strToke.nextElement()); //效果同上
    }
    //String[] str_abc=str.split("\|");//结果与StringTokenizer一样
    String[] str_abc=str.split("|");//得到不同的结果
    for(int i=0;i<str_abc.length;i++)
    {
      System.out.println(str_abc[i]);
    }
  }
}

输出结果:

   为什么会出现这样的结果,如果按照“|”分隔的话,split的输出应该和stringtokenizer没有差别,原因就是同样是分割字符串,对于String.split()方法来说,直接传入参数"|"不能正确的分割字符串,需先对它进行转义,也就是输入“\|”。

  从javadoc上看到:StringTokenizer的是一个被保留,是因为兼容性的原因,不鼓励使用在新的代码中。但是又有实验表明StringTokenizer 性能更高些,所以两个还是都要灵活掌握,针对于更多的字符串,还是建议使用StringTokenizer来处理。

 

原文地址:https://www.cnblogs.com/suanai/p/13972383.html