Dotcpp  >  编程教程  >  Java常用实用类  >  Java StringTokenizer类

Java StringTokenizer类

点击打开在线编译器,边学边练

在前几节我们学习了怎祥使用String类的split()方法分解字符串,这一节我们将学习怎样使用StringTokenizer对象分解字符串,与split()方法不同的是,StringTokenizer对象不使用正则表达式作为分隔标记。


首先我们需要知道一个概念——语言符号,所谓的语言符号,就是指我们分析字符串时,将字符串分解成可以被独立使用的单词,而这些单词就被称作语言符号。


例如,对于字符串"You are welcome",如果把空格作为该字符串的分隔标记,那么该字符串有三个单词,也就是有三个语言符号。而对于字符串"You,are,welcome",如果把逗号作为该字符串的分隔标记,那么该字符串也有三个语言符号。


当我们分析一个字符串并将字符串分解成可被独立使用的单词时,可以使用java.util包中的StringTokenizer类,该类有两个常用的构造方法:

(1) StringTokenizer(String s)

为字符串s构造一个分析器,使用默认的分隔标记,即空格符(若干个空格被看做一个空格)、换行符、回车符、Tab符、进纸符做分隔标记。

(2) StringTokenizer(String s,String delim)

为字符串s构造一个分析器,参数delim中的字符被作为分隔标记。


注意:分隔标记的任意组合仍然是分隔标记。


例如:

StringTokenizer fenxi = new StringTokenizer("you are welcome");
StringTokenizer fenxi = new StringTokenizer("you,are; welcome",", ;");


称一个StringTokenizer对象为一个字符串分析器,一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号,每当调用nextToken()时,都将在字符串中获得下一个语言符号,每当获取到一个语言符号,字符串分析器中负责计数的变量的值就自动减1,该计数变量的初始值等于字符串中的单词数目。


通常用while循环来逐个获取语言符号,为了控制循环,可以使用StringTokenizer类中的hasMoreTokens()方法,只要字符串中还有语言符号,即计数变量的值大于0,该方法就返回true,否则返回false。另外还可以随时让分析器调用countTokens()方法得到分析器中计数变量的值。


例如:

import java.util.*;
public class Main {
    public static void main(String args[]) {
        String s = "welcome to dotcpp(thank you),nice to meet you";
        StringTokenizer fenxi = new StringTokenizer(s,"() ,");
        int number = fenxi.countTokens();
        while(fenxi.hasMoreTokens()) {
            String str = fenxi.nextToken();
            System.out.print(str+" ");
        }
        System.out.println("共有单词:"+number+"个");
    }
}


运行结果如下:

welcome to dotcpp thank you nice to meet you 共有单词:9个



本文固定URL:https://www.dotcpp.com/course/841

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)