/*
* @(#) TestStringTokenizer.java
* in package net.outinn.james.codebase.java.util
* by James Fancy
* on 2003-9-27
*/
package net.outinn.james.codebase.java.util;
import java.util.StringTokenizer;
/**
* TestStringTokenizer 类给出了三个示例,演示了 StringTokenizer 类的常见用法。
* <p>该示例代码运行结果</p>
* <blockquote><pre>
* --------- TEST1 ---------
* name
* telephone
* fax
* email
* address
* --------- TEST2 ---------
* name
* telephone
* fax
* email
* address
* --------- TEST3 ---------
* The
* file
* Good Java Code.txt
* is
* in
* dir
* My Documents
* of
* volume
* Doc Volume
* </pre></blockquote>
* @author James Fancy
* on 2003-9-27 9:12:34
* @see java.util.StringTokenizer
*/
public final class StringTokenizerDemo {
private final String source1 = "name|telephone,fax;email.address";
private final String source3 = "The file /"Good Java Code.txt/" is in" +
" dir /"My Documents/" of volume /"Doc Volume/"";
private final String delim1 = ";,.|"; // 包含分号、逗号、句点、竖址分隔符
private final String delim2 = " /""; // 包含空格、引号
private final String delim3 = "/""; // 仅包含引号
private void printSeparater(String title) {
System.out.println("--------- " + title + " ---------");
}
/**
* 演示 StringTokenizer 最常用的用法,使用 StringTokenizer(String, String)
* 构造 Tokenizer。
* @see java.util.StringTokenizer#StringTokenizer(String, String)
* @see java.util.StringTokenizer#hasMoreTokens()
* @see java.util.StringTokenizer#nextToken()
*/
public void test1() {
this.printSeparater("TEST1");
StringTokenizer tokenizer;
tokenizer = new StringTokenizer(source1, delim1);
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
}
/**
* 演示 StringTokenizer 的 nextToken(String) 用法
* @see java.util.StringTokenizer#StringTokenizer(String)
* @see java.util.StringTokenizer#hasMoreTokens()
* @see java.util.StringTokenizer#nextToken(String)
*/
public void test2() {
this.printSeparater("TEST2");
StringTokenizer tokenizer = new StringTokenizer(source1);
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken(delim1));
}
}
/**
* 一个较综合的示例,它拆分一句话,将每个单词拆分出来,其中,
* 被双引号包含的若干单词被处理为一个单词输出。
* @see java.util.StringTokenizer#StringTokenizer(String, String, boolean)
* @see java.util.StringTokenizer#hasMoreTokens()
* @see java.util.StringTokenizer#nextToken()
* @see java.util.StringTokenizer#nextToken(String)
*/
public void test3() {
this.printSeparater("TEST3");
String delim = delim2;
String word;
boolean begin = false;
StringTokenizer tokenizer = new StringTokenizer(source3, delim, true);
while (tokenizer.hasMoreTokens()) {
word = tokenizer.nextToken(delim);
if (word.equals("/"")) {
if (begin) {
delim = delim2;
begin = false;
} else {
delim = delim3;
begin = true;
}
} else if (!word.equals(" ")) {
System.out.println(word);
}
}
}
/**
* 这个 main 方法输出默认的测试结果。
* @param args 命令行参数
*/
public final static void main(String[] args) {
StringTokenizerDemo demo = new StringTokenizerDemo();
demo.test1();
demo.test2();
demo.test3();
}
}