有時我們需要分析字串並將字串分解成可被獨立使用的單詞,這些單詞叫做語言符號。例如,對於字串“We are students”,如果我們把空格作為該字串的分隔字元,那麼該字串有三個單詞,語言符號。而對於字串“We ,are,student”如果我們把逗號作為了該字串的分隔字元,那麼該字串有三個單詞,語言符號。
當我們分析一個字串並將字串分解成可被獨立使用的單詞時,可以使用java.util包中的StringTokenizer類,該類有兩個常用的構造方法。
·StringTokenizer (String s) 為字串s構造一個分析器,使用預設的分隔字元集合(即空格符),若干個空格被看做一個空格,分行符號,斷行符號符,Tab符,進紙符。
·StringTokenizer(String s,String delim)為字串s構造一個分析器。參數dilim中的字元被作為分隔字元。
例如:
StringTokenizer fenxi=new StringTokenizer("we are student");
StringTokenizer fenxi=new StringTokenizer("we,are,student",",;");
我們把一個StringTokenizer對象稱作一個字串分析器。一個分析器可以使用nextToken()方法逐個擷取字串中的語言符號(單詞),每當調用nextToken()時,都將在字串中獲得下一個語言符號。通常用while迴圈來逐個擷取語言符號,為了控制迴圈,我們可以使用StringTokenizer類中的hasMoreTokens()方法,只要字串中還有語言符號,該方法就返回true,否則返回false。另外我們還可以調用countTokens()方法得到字串一共有多少個語言符號。
下面是一個應用程式,分析字串,分別輸出字串的單詞,並統計單詞個數。
例子7:
import java.util.*;
public class Example5_7
{
public static void main(String args[])
{
String s="I am Geng.X.y,she is my girlfriend";
StringTokenizer fenxi=new StringTokenizer(s,","); //空格和逗號做分
int number=fenxi.countTokens();
while(fenxi.hasMoreTokens())
{
String str=fenxi.nextToken();
System.out.println(str);
System.out.println("還剩"+fenxi.countTokens()+"個單詞");
}
System.out.println("s共有單詞"+number+"個");
}
}