关于split与StringTokenizer的理解

关于split与StringTokenizer的理解

一.split

   根据匹配给定的正则表达式来拆分此字符串。此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。

 

   String[] split(String regex,int limit)此方法的运用在API中得很详细.

limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果:

RegexLimit结果
:2{ "boo", "and:foo" }
:5{ "boo", "and", "foo" }
:-2{ "boo", "and", "foo" }
o5{ "b", "", ":and:f", "", "" }
o-2{ "b", "", ":and:f", "", "" }
o0{ "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更为方便

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值