在前幾節我們學習瞭如何使用String類別的split()方法分解字串,這一節我們將學習如何使用StringTokenizer物件分解字串,與split()方法不同的是,StringTokenizer物件不使用正規表達式作為分隔標記。
首先我們需要知道一個概念──語言符號,所謂的語言符號,就是指我們分析字串時,將字串分解成可以被獨立使用的單詞,而這些單字就被稱作語言符號。
例如,對於字串You are welcome,如果把空格當作該字串的分隔標記,那麼該字串有三個單詞,也就是有三個語言符號。而對於字串You,are,welcome,如果把逗號當作該字串的分隔標記,那麼該字串也有三個語言符號。
當我們分析一個字串並將字串分解成可獨立使用的單字時,可以使用java.util套件中的StringTokenizer類,該類別有兩個常用的建構方法:
為字串s建構一個分析器,使用預設的分隔標記,即空格符(若干個空格被看做一個空格)、換行符、回車符、Tab符、進紙符做成分隔標記。
為字串s建構一個分析器,參數delim中的字元被當作分隔標記。
注意:分隔標記的任意組合仍然是分隔標記。
例如:
StringTokenizerfenxi=newStringTokenizer(youarewelcome);StringTokenizerfenxi=newStringTokenizer(you,are;welcome,,;);
稱一個StringTokenizer物件為字串分析器,一個分析器可以使用nextToken()方法逐一取得字串中的語言符號,每當呼叫nextToken()時,都會在字串中獲得下一個語言符號,每當取得到語言符號,字串分析器中負責計數的變數的值就會自動減1,該計數變數的初始值等於字串中的單字數目。
通常用while循環來逐一取得語言符號,為了控制循環,可以使用StringTokenizer類別中的hasMoreTokens()方法,只要字串中還有語言符號,即計數變數的值大於0,該方法就回傳true,否則回傳false。另外還可以隨時讓分析器呼叫countTokens()方法得到分析器中計數變數的值。
例如:
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Strings=welcometodotcpp(thankyou),nicetomeetyou;StringTokenizerfenxi=newStringTokenizer (s,(),);intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens()){Stringstr=fenxi.nextToken();System.out.print(str+);}System.out.println(共有字:+number+個);}}
運行結果如下:
welcometodotcppthankyounicetomeetyou共有單字:9個