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来处理。

     

  • 相关阅读:
    THUSC2018退役预定
    TAT
    dsu on tree(CF600E Lomsat gelral)
    Bzoj4784: [Zjoi2017]仙人掌
    [APIO2018] Duathlon 铁人两项
    仙人掌基础
    Bzoj3672: [Noi2014]购票
    CF809E Surprise me!
    虚树(Bzoj3611: [Heoi2014]大工程)
    Bzoj3197: [Sdoi2013]assassin
  • 原文地址:https://www.cnblogs.com/suanai/p/13972383.html
Copyright © 2011-2022 走看看