StringTokenizer
StringTokenizer的實例有兩種方式,這兩種方式取決於returnDelims 標記位的值是true或false。
true
標記為true,那些分隔設定字元本身即為標記。因此標記要么是一個分隔設定字元,要么是那些連續字元(不是分隔設定)的最大序列。
false
標記為false,則分隔設定字元用來分隔標記。標記是連續字元(不是分隔設定)的最大序列。
StringTokenizer類的對象在內部已經標識化的字元串中維持了當前位置。一些操作使得在現有位置上的字元串提前得到處理。 一個令牌的值是由獲得其曾經創建StringTokenizer類對象的字串所返回的。
具體函式:
StreamTokenizer定義了幾種基本的常量用於標識解析過程:TT_EOF(流結尾)、TT_EOL(行結尾)、
TT_NUMBER(數字元號, 0 1 2 3 4 5 6 7 8 9 . -都屬於數字語法)、TT_WORD(一個單詞)。
其含有的基本方法介紹一下:
commenChar(int ch) - 指定某個字元為注釋字元,此字元之後直到行結尾都被stream tokenizer忽略。
eolIsSignificant(boolean flag) - 決定一個行結束符是否被當作一個基本的符號處理,如果是true,則被當作一個基本符號,不當作普通的分隔設定,如果是false,則保持原義,即當作普通的分隔設定。
lineno() - 返回當前流所在的行號。
lowerCaseMode(boolean flag) - 決定是否讀取一個單詞時是否轉變成小寫。
nextToken() - 分析下一個。
ordinaryChar(int ch) - 指定字元在這個tokenizer中保持原義,即只會把當前字元認為普通的字元,不會有其他的語義。
ordinaryChars(int low, int hi) - 指定範圍內的字元保持語義,同上
parseNumbers() - 當stream tokenizer遭遇到一個單詞為雙精度的浮點數時,會把它當作一個數字,而不是一個單詞。
pushBack() - 回退,會引起下一個nextToken方法返回當前值。
quoteChar(int ch) - 指定當前字元為當前tokenizer中的分隔設定,在兩個符號之間被當作一個字元串解析。
resetSyntax() - 重置語法表使所有的字元都被認為是“ordinary”。
slashSlashComments(boolean flag) - 如果為true,則/*與*/之間的都被認為是注釋,反之,不是。
slashStartComments(boolean flag) - 如果為true,則//之後到行結尾的所有都被認為是注釋,反之,不是。
whitespaceChars(int low, int hi) - 字元low與hi之間的所有字元都被當作為空格符,即被認識為tokenzier的分隔設定。
wordChars(int low, int hi) - 字元low與hi之間的所有字元都被當作為單詞的要素。
一個單詞是由一個單詞要素後面跟著0個或者更多個單詞要素或者數字要素。
實例
接下來是運用此類的一個實例。 代碼:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
列印出來之後是:
this
is
a
test
接下來的實例闡明了String.split方法如何將一個字元串分解成其基本令牌的。 String[] result = "this is a test".split("\\s");
for (int x=0; x<result.length; x++)
System.out.println(result[x]);
列印出來之後是:
this
is
a
test
StringTokenizer 是出於兼容性的原因而被保留的遺留類(雖然在新代碼中並不鼓勵使用它)。建議所有尋求此功能的人使用 String 的 split 方法或 java.util.regex 包