关于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 是出于兼容性的原因而被保留的遗留类(尽管在新代码中并不鼓舞使用它)。建议全部寻求此功能的人使用 String 的 split 方法或java.util.regex 包。
三.一个面试题
对一个字符串,单词之间以空格切割,试以单词为单位反序打印(如:I Love China结果为:China Love I)
做的细想通常是将该字符串中的每一个单词保存在String[]里然后反序打印,这里就须要字符串切割的方法了...
使用split:
- static String str = "I Love China";
- public static void splitTest() {
- String[] result = str.split(" ",-1);
- for(int i = result.length - 1; i >= 0; i--) {
- System.out.print(result[i] + " ");
- }
- }
使用StringTokenizer:
- static String str = "I Love China";
- public static void StringTokenizerTest() {
- StringTokenizer st = new StringTokenizer(str);
- String[] strArray = new String[st.countTokens()];
- for (int i = strArray.length - 1; i >= 0; i--) {
- strArray[i] = st.nextToken() + " ";
- }
- for(String s : strArray) {
- System.out.print(s);
- }
- }//看上去此方法有点多此一举,使用split更为方便
关于split与StringTokenizer的理解的更多相关文章
- java中subString、split、stringTokenizer三种截取字符串方法的性能比较(转)
最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代? ...
- StringTokenizer(字符串分隔解析类型)
java.util.StringTokenizer 功效:将字符串以定界符为界,分析为一个个的token(可理解为单词),定界符可以自己指定. 1.构造函数. 1. StringTokenizer( ...
- Linux大文件分割split和合并cat使用方法
本文主要介绍linux下两个命令:split和cat.其中,相信大家都熟悉cat命令,一般用来查看一个文件的内容,但是它还其它的功能,比如这里要介绍的文件合并功能,它可把多个文件内容合并到一个文件中. ...
- Java StringTokenizer Example
In Java, you can use StringTokennizer class to split a String into different tokenas by defined deli ...
- 使用StringTokenizer分解字符串
Java切割字符串.一般使用substring.split.StringTokenizer来处理,前两种是String对象的方法,使用字符串能够直接处理,本文介绍下StringTokenizer的使用 ...
- Java-Runoob-高级教程-实例-字符串:08. Java 实例 - 字符串分割(StringTokenizer)
ylbtech-Java-Runoob-高级教程-实例-字符串:08. Java 实例 - 字符串分割(StringTokenizer) 1.返回顶部 1. Java 实例 - 字符串分隔(Strin ...
- String高效编程优化(Java)
1, substring截取超大字符串可能造成的“内存泄漏” 2,+ 操作符的优化和局限 3,StringBuilder和StringBuffer 4,split和StringTokenizer做简单 ...
- HBase介绍及简易安装(转)
HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存 ...
- MapReduce 简单的全文搜索
上一个已经实现了反向索引,那么为什么不尝试下全文搜索呢.例如有了 Hello file3.txt:1; MapReduce file3.txt:2;fil1.txt:1;fil2.tx ...
随机推荐
- eclipse之The currrently displayed page contains invalid values错误
现象: eclipse的preferences里面须要保存密码,保存报错Could Not Accept ChangesThe currrently displayed page contains i ...
- RobotFramework 数据分离
RobotFramework 数据分离分为三种 1. Run 添加参数 2. 外部的Python文件 3. 读取Excel Run 添加参数 (适用于jenkins) 使用-v 参数名:参数值 使用外 ...
- iot 表 主键索引叶子块包含了表所有数据
<pre name="code" class="html">iot表测试: 在create table语句后面使用organization inde ...
- 基础知识(10)- 部署应用程序和applet
10.1 JAR文件 10.1.1 清单文件 10.1.2 可运行JAR文件 10.1.3 资源 10.1.4 密封 10.2 Java Web Start 10.2.1 沙箱 10.2. ...
- MFC-消息分派
前言 由于工作需要,这几天学了一点MFC,在AFX里看到很多熟悉的东西,如类型信息,序列化,窗口封装和消息分派.几乎每个界面库都必须提供这些基础服务,但提供的手法却千差万别.MFC大量地借用了宏,映射 ...
- Android设计中的.9.png与Android Studio中的设置
在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的 ...
- 【Demo 0004】Java基础-类封装性
本章学习要点: 1. Java封装特性; 2. 掌握类的定义: 3. 掌握类的调用方法; 一.封装特性 Java 纯面向对象语言,面向对象语言遵 ...
- SRM 624 Building Heights DivI 解读
几乎相同的一标题.欲了解更多请参阅:http://community.topcoder.com/stat?c=problem_statement&pm=13211&rd=15857 思 ...
- Github Atom
码代码新神器-Github Atom 周末闲着没事,逛论坛发现了一个新的编辑器,由github发布的Atom编辑器.瞬间被吸引了,所以就去尝试着折腾了一下,后来发现这个编辑器确实很不错,他的特点就 ...
- 使用Delphi声明C++带函数的结构体实战 good
在小组开发中,应用程序部分采用Delphi7,一些组件使用C++做.在今天将一个动态库的C++接口声明头文件转换为D7的Unit单元时,一切都很顺利,直到遇到下面这样一个另类的东西: typedef ...