天天看點

StringTokenizer字元串分解

java.util

類 StringTokenizer

首先:要知道

 StringTokenizer 隻有三個構造方法

   1. StringTokenizer(String str) :被分割對象str,分隔符采取預設分割,java預設的分隔符是“空格”、“制表符(‘\t’)”、“換行符(‘\n’)”、“回車符(‘\r’)”。預設的話,所有的分隔符都會同時起作用。

   2. StringTokenizer(String str, String delim) :分隔符不采用預設,提供一個指定的分隔符。

   3. StringTokenizer(String str, String delim, boolean returnDelims) :指定一個特定的分隔符,同時,指定是否傳回分隔符。如果是true,分隔符将被作為一個token傳回。

API原文描述:If the

returnDelims

flag is

true

, then the delimiter characters are also returned as tokens. Each delimiter is returned as a string of length one. If the flag is

false

, the delimiter characters are skipped and only serve as separators between tokens.

   方法也不多,隻有6個:(所有的方法都是public型)

int 

countTokens()

   對于這個方法API的描述是這樣的:Calculates the number of times that this tokenizer's

nextToken

method can be called before it generates an exception. The current position is not advanced. 

  它說計算nextToken方法在抛異常以前還能被調用的次數,目前索引不增加。

 其實就是說還有幾個元素可以被周遊。傳回的是 目前可以被通路的元素的個數。

方法:

boolean

hasMoreTokens()

boolean

hasMoreElements()

用來判斷目前還有沒有可以周遊的元素

方法:

Object

nextElement()

String

nextToken()

用來獲得目前的元素token,一個傳回String類型,一個傳回Object類型

還有一個方法:

 String

nextToken(String delim)

 傳回目前索引開始,指定分隔符的下一個token。實際傳回的是索引目前位置到下一個delim出現為止所有的字元。

java.lang.Object
  
                      
java.util.StringTokenizer
      
所有已實作的接口:
Enumeration< Object>
public class StringTokenizer
   
    extends 
    Object
   
   
    implements 
    Enumeration<
    Object>
         

string tokenizer 類允許應用程式将字元串分解為标記。tokenization 方法比

StreamTokenizer

類所使用的方法更簡單。

StringTokenizer

方法不區分辨別符、數和帶引号的字元串,它們也不識别并跳過注釋。

可以在建立時指定,也可以根據每個标記來指定分隔符(分隔标記的字元)集。

StringTokenizer

的執行個體有兩種行為方式,這取決于它在建立時使用的

returnDelims

标志的值是

true

還是

false

  • 如果标志為

    false

    ,則分隔符字元用來分隔标記。标記是連續字元(不是分隔符)的最大序列。
  • 如果标志為

    true

    ,則認為那些分隔符字元本身即為标記。是以标記要麼是一個分隔符字元,要麼是那些連續字元(不是分隔符)的最大序列。

StringTokenizer 對象在内部維護字元串中要被标記的目前位置。某些操作将此目前位置移至已處理的字元後。

通過截取字元串的一個子串來傳回标記,該字元串用于建立 StringTokenizer 對象。

下面是一個使用 tokenizer 的執行個體。代碼如下:

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

輸出以下字元串:

this
     is
     a
     test
       

StringTokenizer 是出于相容性的原因而被保留的遺留類(雖然在新代碼中并不鼓勵使用它)。建議所有尋求此功能的人使用 String 的 split 方法或 java.util.regex 包。

下面的示例闡明了如何使用 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
       
從以下版本開始:
JDK1.0
另請參見:

StreamTokenizer

構造方法摘要

StringTokenizer(String str)

為指定字元串構造一個 string tokenizer。

StringTokenizer(String str, String delim)

為指定字元串構造一個 string tokenizer。

StringTokenizer(String str, String delim, boolean returnDelims)

為指定字元串構造一個 string tokenizer。
方法摘要

int

countTokens()

計算在生成異常之前可以調用此 tokenizer 的

nextToken

方法的次數。

boolean

hasMoreElements()

傳回與

hasMoreTokens

方法相同的值。

boolean

hasMoreTokens()

測試此 tokenizer 的字元串中是否還有更多的可用标記。

Object

nextElement()

除了其聲明傳回值是

Object

而不是

String

之外,它傳回與

nextToken

方法相同的值。

String

nextToken()

傳回此 string tokenizer 的下一個标記。

String

nextToken(String delim)

傳回此 string tokenizer 的字元串中的下一個标記。
從類 java.lang.Object 繼承的方法

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構造方法詳細資訊

StringTokenizer

public StringTokenizer(String str,
                       String delim,
                       boolean returnDelims)      
為指定字元串構造一個 string tokenizer。

delim

參數中的所有字元都是分隔标記的分隔符。

如果

returnDelims

标志為

true

,則分隔符字元也作為标記傳回。每個分隔符都作為一個長度為 1 的字元串傳回。如果标志為

false

,則跳過分隔符,隻是用作标記之間的分隔符。

注意,如果 delim 為 null,則此構造方法不抛出異常。但是,嘗試對得到的 StringTokenizer 調用其他方法則可能抛出 NullPointerException。

參數:

str

- 要解析的字元串。

delim

- 分隔符。

returnDelims

- 訓示是否将分隔符作為标記傳回的标志。
抛出:

NullPointerException

- 如果 str 為

null

StringTokenizer

public StringTokenizer(String str,
                       String delim)      
為指定字元串構造一個 string tokenizer。

delim

參數中的字元都是分隔标記的分隔符。分隔符字元本身不作為标記。

注意,如果 delim 為 null,則此構造方法不抛出異常。但是,嘗試對得到的 StringTokenizer 調用其他方法則可能抛出 NullPointerException。

參數:

str

- 要解析的字元串。

delim

- 分隔符。
抛出:

NullPointerException

- 如果 str 為

null

StringTokenizer

public StringTokenizer(String str)      
為指定字元串構造一個 string tokenizer。tokenizer 使用預設的分隔符集

" \t\n\r\f"

,即:空白字元、制表符、換行符、回車符和換頁符。分隔符字元本身不作為标記。
參數:

str

- 要解析的字元串。
抛出:

NullPointerException

- 如果 str 為

null

方法詳細資訊

hasMoreTokens

public boolean hasMoreTokens()      
測試此 tokenizer 的字元串中是否還有更多的可用标記。如果此方法傳回 true,那麼後續調用無參數的 nextToken 方法将成功地傳回一個标記。
傳回:
當且僅當該字元串中目前位置後至少有一個标記時才為

true

;否則為

false

nextToken

public String nextToken()      
傳回此 string tokenizer 的下一個标記。
傳回:
此 string tokenizer 的下一個标記。
抛出:

NoSuchElementException

- 如果此 tokenizer 的字元串中沒有更多标記。

nextToken

public String nextToken(String delim)      
傳回此 string tokenizer 的字元串中的下一個标記。首先,字元集被更改為字元串 delim 中的字元,該字元集被認為是 StringTokenizer 對象的分隔符。接着傳回字元串中目前位置之後的下一個标記。目前位置被提前到所識别的标記前。進行此調用後新的分隔符集仍然保持預設值。
參數:

delim

- 新的分隔符。
傳回:
轉換到新的分隔符集後的下一個标記。
抛出:

NoSuchElementException

- 如果此 tokenizer 的字元串中沒有更多标記。

NullPointerException

- 如果 delim 為

null

hasMoreElements

public boolean hasMoreElements()      
傳回與

hasMoreTokens

方法相同的值。它的存在使得此類可以實作

Enumeration

接口。
指定者:
接口

Enumeration<Object>

中的

hasMoreElements

傳回:
如果有更多标記,則為

true

;否則為

false

另請參見:

Enumeration

,

hasMoreTokens()

nextElement

public Object nextElement()      
除了其聲明傳回值是

Object

而不是

String

之外,它傳回與

nextToken

方法相同的值。它的存在使得此類可以實作

Enumeration

接口。
指定者:
接口

Enumeration<Object>

中的

nextElement

傳回:
字元串中的下一個标記。
抛出:

NoSuchElementException

- 如果此 tokenizer 的字元串中沒有更多标記。
另請參見:

Enumeration

,

nextToken()

countTokens

public int countTokens()      
計算在生成異常之前可以調用此 tokenizer 的

nextToken

方法的次數。目前位置沒有提前。
傳回:
使用目前分隔符集的字元串中剩餘的标記數。
另請參見:

nextToken()