前几天看一个老帖子
http://www.iteye.com/topic/7279?page=2
其中凤舞凰扬前辈说到了StringTokenizer。
之前没接触过StringTokenizer,看上去类名很长,仿佛很牛13似的。最近了解了一下
引用
StringTokenizer 类允许应用程序将字符串分解为标记
也就是分解字符串用的
让我们来看一个简单的例子
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
出去结果如下
this
is
a
test
这种不带参数的StringTokenizer使用的分隔符是\t\n\r\f,即空白字符、制表符、换行符、回车符和换页符。
ok,StringTokenizer还提供了另一种构造方法,StringTokenizer(String str, String delim)
从名字上看,可以知道,我们可以自定义delimiter。那么,这个delimiter是不是可以为正则表达式呢?满怀期待的试验一下
String input = "This is just a test";
//设想的delimiter可以为正则表达式
StringTokenizer st = new StringTokenizer(input,"\\s{1}");
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
}
本以为结果会是
this
is
a
test
哪知一看,结果为
Thi
i
ju
t a te
t
可见,StringTokenizer的delimeter不可以为正则表达式
替代方法?
首先,来看String的split方法
String input = "This is just a test";
String [] str = input.split("\\s{1}");
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
输出结果为
this
is
a
test
ok,正确。String的split方法接受的参数可以为正则表达式。
我们可以看一下split方法的定义
public String[] split(String regex) {
return split(regex, 0);
}
其实这个参数他们就是按正则表达式来对待的。(哎,我一直以为只能是字符呢
)
接着来看Scanner的表现。
引用
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器
Scanner scanner = new Scanner(input);
scanner.useDelimiter("\\s{1}");
while(scanner.hasNext()){
System.out.println(scanner.next());
}
同样的,通过设置Delimiter(可以为正则表达式),我们可以很轻松的拆分字符串
输出结果为
This
is
just
a
test
另外,还可以使用Pattern类的split方法,我觉得这个和String的split方法差不多。(Pattern类主要不是用在拆分字符串,而是在正则表达式的应用那里)
Pattern pattern = Pattern.compile("\\s{1}");
str = pattern.split(input);
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
结果同样为
This
is
just
a
test
好了,现在已经知道的就有三种方式来代替StringTokenizer了,并且由于StringTokenizer只能做一些很简单的拆分,远不能适应现在的要求,所以,StringTokenizer,你可以放心的撤退了,远离历史舞台吧。
其实sun也知道这个
sun 写道
<tt>StringTokenizer</tt> is a legacy class that is retained for
* compatibility reasons although its use is discouraged in new code. It is
* recommended that anyone seeking this functionality use the <tt>split</tt>
* method of <tt>String</tt> or the java.util.regex package instead.
ps:那个老帖子是04年的。也许那会还没有这么多的替代方法。
不过5年过去了。StringTokenizer就不要再用了。
StringTokenizer,洗洗睡吧。
分享到:
相关推荐
在这个问题中,我们关注的是如何在 C# 中模拟实现 Java 的 `StringTokenizer` 类的功能。Java 的 `StringTokenizer` 类是一个用于分隔字符串的工具,它可以根据特定的分隔符将一个大的字符串拆分成多个小的字符串或...
import java.util.StringTokenizer; /** * * @author lushuaiyin * */ public class StringTokenizerTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated...
### StringTokenizer的用法 在Java编程语言中,`StringTokenizer`是`java.util`包中的一个实用类,用于将字符串分割成多个子字符串(通常称为令牌或token)。它支持多种分隔符,并允许用户控制是否返回分隔符作为...
用delphi实现java的StringTokenizer类的功能。在原来曾青松版本的基础上修复bug完成的。
StringTokenizer tool class
基于Java中的StringTokenizer类详解 Java中的StringTokenizer类是一个非常有用的工具类,用于字符串的分隔解析。它属于Java.util包。通过使用StringTokenizer类,我们可以轻松地将一个字符串分隔成多个子字符串,以...
在Java编程语言中,`StringTokenizer`类是一个非常实用的工具,它用于将字符串分割成多个子字符串。这个工具在处理包含多个分隔符的复杂数据时尤其有用。本详细教程将深入探讨`StringTokenizer`的工作原理、用法以及...
本段代码 用于测试StringTokenizer用法/** * 测试StringTokenizer,继承Enumeration; * @author DELL */
JAVA StringBuffer类与StringTokenizer类代码解析 JAVA StringBuffer类是Java语言中的一种字符串处理类,提供了一个字符串的可变序列,类似于String类,但它对存储的字符序列可以任意修改,使用起来比String类灵活...
Write a program called StringTokenizer1.java that accepts a string, looks for commas within the string, and breaks the string up into the parts separated by the comma. For example, the string ...
StringTokenizer 马克-to-win java视频 字符串解析器
StringTokenizer 马克-to-win java视频 字符串解析器
StringTokenizer tokens = new StringTokenizer(input, " "); while (tokens.hasMoreTokens()) { String token = tokens.nextToken(); // 处理每个标记 } ``` ### 2. 输入输出处理 在Java中,`JOptionPane`类...
Java中的`StringTokenizer`类是处理字符串的一种工具,它允许我们根据特定的分隔符将一个字符串分解成多个令牌或子字符串。这个类在早期的Java版本中被广泛使用,但在Java 5之后,`split()`方法的引入使得`...
java文档String和StringTokenizer 马克-to-win java视频 字符串解析器
本文将深入探讨几个核心类:Integer、Float、Double、Character、String、StringTokenizer、StringBuffer以及Random,解析它们的功能与应用场景,帮助开发者更好地利用这些类来解决实际问题。 ### Integer类 `...
### Java字符串分隔类——StringTokenizer的使用方法详解 在Java编程中,处理字符串是非常常见的需求之一,特别是在数据解析、格式化输出等场景下。`StringTokenizer`类作为Java标准库的一部分,为开发者提供了一种...
Arduino-StringTokenizer-库一个非常简单的arduino库,可以使用Java(如string-tokenizer函数)来使用定界符分割字符串。 基本说明: 参数:用于标记化的字符串; 分隔符字符串职能 : (boolean)hasNext()-如果...
根据提供的文件信息,可以看出这是一段Java代码,主要涉及了`StringTokenizer`类的应用以及`Hashtable`类的使用。下面将对这段代码所涉及的知识点进行详细的解释。 ### 使用到的关键知识点 #### 1. `...
- 使用`StringTokenizer`解析用户输入,例如,如果用户名和留言内容由逗号分隔,可以创建一个`StringTokenizer`实例来分割字符串。 - 将解析出的字段通过`application.setAttribute()`存储到`application`对象中。...