关于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. for(int i = result.length - 1; i >= 0; i--) {

  5. System.out.print(result[i] + " ");

  6. }

  7. }

使用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. for (int i = strArray.length - 1; i >= 0; i--) {

  6. strArray[i] = st.nextToken() + " ";

  7. }
  8. for(String s : strArray) {

  9. System.out.print(s);

  10. }

  11. }//看上去此方法有点多此一举,使用split更为方便

关于split与StringTokenizer的理解的更多相关文章

  1. java中subString、split、stringTokenizer三种截取字符串方法的性能比较(转)

    最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代? ...

  2. StringTokenizer(字符串分隔解析类型)

    java.util.StringTokenizer 功效:将字符串以定界符为界,分析为一个个的token(可理解为单词),定界符可以自己指定.  1.构造函数. 1. StringTokenizer( ...

  3. Linux大文件分割split和合并cat使用方法

    本文主要介绍linux下两个命令:split和cat.其中,相信大家都熟悉cat命令,一般用来查看一个文件的内容,但是它还其它的功能,比如这里要介绍的文件合并功能,它可把多个文件内容合并到一个文件中. ...

  4. Java StringTokenizer Example

    In Java, you can use StringTokennizer class to split a String into different tokenas by defined deli ...

  5. 使用StringTokenizer分解字符串

    Java切割字符串.一般使用substring.split.StringTokenizer来处理,前两种是String对象的方法,使用字符串能够直接处理,本文介绍下StringTokenizer的使用 ...

  6. Java-Runoob-高级教程-实例-字符串:08. Java 实例 - 字符串分割(StringTokenizer)

    ylbtech-Java-Runoob-高级教程-实例-字符串:08. Java 实例 - 字符串分割(StringTokenizer) 1.返回顶部 1. Java 实例 - 字符串分隔(Strin ...

  7. String高效编程优化(Java)

    1, substring截取超大字符串可能造成的“内存泄漏” 2,+ 操作符的优化和局限 3,StringBuilder和StringBuffer 4,split和StringTokenizer做简单 ...

  8. HBase介绍及简易安装(转)

    HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存 ...

  9. MapReduce 简单的全文搜索

    上一个已经实现了反向索引,那么为什么不尝试下全文搜索呢.例如有了 Hello     file3.txt:1; MapReduce     file3.txt:2;fil1.txt:1;fil2.tx ...

随机推荐

  1. SRM 582 Div II Level Two SpaceWarDiv2

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12556 #include <iostream> # ...

  2. uva 1025

    紫皮书 非原创…… 某城市的地铁是线性的有n个车站从左到右编号为1-n,有M1辆地铁从第一站出发,有M2辆车从最后一站出发,mario从第一站出发,目的是在时刻T会见车站n的一个朋友(间谍).在车站等 ...

  3. 使用python进行加密解密AES算法

    使用python进行加密解密AES算法-代码分享-PYTHON开发者社区-pythoner.org 使用python进行加密解密AES算法 TY 发布于 2011-09-26 21:36:53,分类: ...

  4. java 控制表项删除、编辑、添加(实现接口)

    package com.platformda.optimize; import java.awt.BorderLayout; import java.awt.Point; import java.aw ...

  5. 如何在使用摩托罗拉上的RSS阅读器应用进行一次订阅

    订阅一个CSDN的RSS为例. 1.打开RSS阅读器. 2.设置->新增订阅->手动新增 订阅URL:输入http://articles.csdn.net/api/rss.php?tid= ...

  6. 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例

    通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参考上 一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富的 ...

  7. 浅谈mapreduce程序部署

    尽管我们在虚拟机client上能非常快通过shell命令,进行运行一些已经封装好实例程序,可是在应用中还是是自己敲代码,然后部署到server中去,以下,我通过程序进行浅谈一个程序的部署过程. 在启动 ...

  8. hdu 4707 Pet 2013年ICPC热身赛A题 dfs水题

    题意:linji的仓鼠丢了,他要找回仓鼠,他在房间0放了一块奶酪,按照抓鼠手册所说,这块奶酪可以吸引距离它D的仓鼠,但是仓鼠还是没有出现,现在给出一张关系图,表示各个房间的关系,相邻房间距离为1,而且 ...

  9. MVP模式在Android开发中的应用

    一.MVP介绍      随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互.同一 ...

  10. 模拟new实例化对象。

    使用new和字面量的的方法是两种主流创建对象的方法,两种最终都能达到同样的实例化的对象,本章主要围绕new关键字来实例化一个对象并且讲一个不使用new但是完全与new实例化对象相同的例子. 在使用ne ...