在前几节我们学习了怎祥使用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个
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程