Java StringTokenizer類解讀

StringTokenizer 類簡介

StringTokenizer 類允許應用程序將一個字符串分割爲各個標記。該類的方法不區分標識符、數字和帶引號的字符串,也不是識別和跳過註釋。分隔字符串的分隔符可以在 StringTokenizer 類對象創建時指定,亦可以在每個標記的基礎上指定。StringTokenizer 類在創建時,根據標識 returnDelims 的值的不同,該類創建的對象有兩種工作方式:

  1. 若標識爲 false ,分隔符被用來分割各個標記。一個標記是不包括分隔符的最大連續字符串。
  2. 若標識爲 true ,則分隔符本身也被認爲是標記。此時一個標記要麼是分隔符,要麼是不包括分隔符的最大連續字符串。

StringTokenizer 類在創建對象時,若沒有指定分隔符,則該對象默認使用空白字符、製表符、換行符和回車符作爲默認分隔符。
StringTokenizer 類實現了枚舉接口(原因未知),故該類需要實現枚舉接口的兩個方法:hasMoreTokens()和nextToken()。
一個 StringTokenizer 類的對象在字符串標記化的過程中會維持一個當前位置,該對象的一些操作能夠向前移動當前位置。
StringTokenizer 類是一個遺留類,爲了兼容性而保留下來的。但是在新的代碼中不鼓勵使用該類來分隔字符串。若用戶向分隔字符串,則推薦使用String對象的 split()或者使用正則表達式相關的工具類來實現。


示例

StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
    System.out.println(st.nextToken());
}

函數

構造函數

  • StringTokenizer(String str, String delim, boolean returnDelims)根據給定的str和delim構造一個對象,delim字符串中的每一個字符都是分隔符。若標識returnDelims爲true,則分隔符同樣會作爲標記返回,每個分隔符都是長度爲1的字符串;反之,分隔符僅僅用來分隔字符串。
  • StringTokenizer(String str, String delim)根據給定的str和delim構造一個對象。分隔符字符不會被看作是需要返回的標記。若delim爲空,該構造函數不會拋出異常信息,但是很有可能在調用該對象的其他函數的時候會拋出異常信息。
  • StringTokenizer(String str)根據給定的str來構造一個對象,使用默認的分隔符來分隔字符串。

函數

  • boolean hasMoreTokens()若標記化的字符串中含有更多可用的標記,那麼返回true;反之返回false。
  • String nextToken()從標記化的字符串中返回下一個標記。
  • String nextToken(String delim)首先分隔符字符集會變成delim指定的分隔符,然後當前位置之後的標記被返回。在調用該函數後,新的分隔符集會變成默認的。
  • boolean hasMoreElements()與 hasMoreTokens ()相同工作。該函數的存在是由於 StringTokenizer 類實現了枚舉接口。
  • Object nextElement()與nextToken()相同工作,只是該函數返回的是 Object 對象而已。該函數的存在也是由於 StringTokenizer 類實現了枚舉接口。
  • int countTokens()計算出在 nextToken ()方法拋出異常信息之前,它能夠被調用多少次。調用該函數並不會導致當前位置向前移動。

總結

StringTokenizerJDK 早期設計的一個類,爲了保證版本的兼容性,該類一直沒有被刪除。可以感覺的出來,使用該類進行字符串的分隔沒有正則表達式那樣方便。筆者之所以查看該類的相關 API ,主要原因是之前在網上查看 Scanner 相關介紹時有博主提起過,故春節在家無聊就閒來看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章