• 关于split与StringTokenizer的理解


    关于split与StringTokenizer的理解

    一.split

       依据匹配给定的正則表達式来拆分此字符串。此方法返回的数组包括此字符串的子字符串,每一个子字符串都由还有一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。假设表达式不匹配输入的不论什么部分,那么所得数组仅仅具有一个元素,即此字符串。

     

       String[] split(String regex,int limit)此方法的运用在API中得非常具体.

    limit 參数控制模式应用的次数,因此影响所得数组的长度。假设该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,并且数组的最后一项将包括全部超出最后匹配的定界符的输入。假设 n 为非正,那么模式将被应用尽可能多的次数,并且数组能够是不论什么长度。假设 n 为 0,那么模式将被应用尽可能多的次数,数组能够是不论什么长度,并且结尾空字符串将被丢弃。

    比如,字符串 "boo:and:foo" 使用这些參数可生成下面结果:

    Regex Limit 结果
    : 2 { "boo", "and:foo" }
    : 5 { "boo", "and", "foo" }
    : -2 { "boo", "and", "foo" }
    o 5 { "b", "", ":and:f", "", "" }
    o -2 { "b", "", ":and:f", "", "" }
    o 0 { "b", "", ":and:f" }

    调用此方法的 str.split(regex, n) 形式与下面表达式产生的结果全然同样:

           Pattern.compile(regex).split(str, n)

     对于字符串的切割处理使用split是想当方便的...

    二.StringTokenizer

       stringtokenizer 类同意应用程序将字符串分解为标记。在该类中包括了几个重要的方法.

       int CountTokens()  计算在生成异常之前能够调用此 tokenizer 的 nextToken 方法的次数。

       boolean hasMoreElements()返回与 hasMoreTokens 方法同样的值。

       boolean hasMoreTokens()測试此 tokenizer 的字符串中是否还有很多其它的可用标记。

       Object nextElement()除了其声明返回值是 Object 而不是 String 之外,它返回与 nextToken 方法同样的值。

       String nextToken()返回此 string tokenizer 的下一个标记。

     

     

        StringTokenizer 是出于兼容性的原因而被保留的遗留类(尽管在新代码中并不鼓舞使用它)。建议全部寻求此功能的人使用 Stringsplit 方法或java.util.regex 包。

     

    三.一个面试题

       对一个字符串,单词之间以空格切割,试以单词为单位反序打印(如:I Love China结果为:China Love I)

     

       做的细想通常是将该字符串中的每一个单词保存在String[]里然后反序打印,这里就须要字符串切割的方法了...

       使用split:

    1. static String str = "I Love China";
    2. public static void splitTest() {
    3.     String[] result = str.split(" ",-1);
    4.         
    5.     for(int i = result.length - 1; i >= 0; i--) {
    6.     System.out.print(result[i] + " ");
    7.     }
    8. }

        使用StringTokenizer:

    1. static String str = "I Love China";
    2. public static void StringTokenizerTest() {
    3.     StringTokenizer st = new StringTokenizer(str);
    4.     String[] strArray = new String[st.countTokens()];
    5.         
    6.     for (int i = strArray.length - 1; i >= 0; i--) {
    7.         strArray[i] = st.nextToken() + " ";
    8.     }
    9.         
    10.     for(String s : strArray) {
    11.         System.out.print(s);
    12.     }
    13. }//看上去此方法有点多此一举,使用split更为方便

     

  • 相关阅读:
    【转】Windows2012设置文件夹权限报错:failed to enumerate objects in the container.
    Vue 中背景图片路径怎么加参数?
    C#有小数位数直接进位为整数;JavaScript Math有小数位数取整方法
    C# Linq to Entity使用Groupby查询时超时或很慢解决思路
    colModel的设置(给单元格指定颜色等)
    金额的表示方法
    jqGrid表格时间格式化 ,formatoptions: {srcformat:'Y-m-d H:i:s',newformat:'Y-m-d H:i:s H:i:s'}
    HTTP Error 414. The request URL is too long. asp.net解决方案
    radio/checkbox各种操作
    Kubernetes常用命令总结
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4008063.html
Copyright © 2020-2023  润新知