zoukankan      html  css  js  c++  java
  • 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来处理。

     

  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/suanai/p/13972383.html
Copyright © 2011-2022 走看看