鴻蒙OS StringTokenizer

2022-08-09 11:27 更新

StringTokenizer

java.lang.Object

|---java.util.StringTokenizer

public class StringTokenizer
extends Object
implements Enumeration<Object>

字符串標(biāo)記器類(lèi)允許應(yīng)用程序?qū)⒆址纸鉃闃?biāo)記。 標(biāo)記化方法比 StreamTokenizer 類(lèi)使用的方法簡(jiǎn)單得多。 StringTokenizer 方法不區(qū)分標(biāo)識(shí)符、數(shù)字和帶引號(hào)的字符串,也不識(shí)別和跳過(guò)注釋。

分隔符集(分隔標(biāo)記的字符)可以在創(chuàng)建時(shí)指定,也可以基于每個(gè)標(biāo)記指定。

StringTokenizer 實(shí)例的行為方式有兩種,具體取決于它是使用 returnDelims 標(biāo)志創(chuàng)建的,其值為 true 或 false:

  • 如果標(biāo)志為 false,則分隔符用于分隔標(biāo)記。 記號(hào)是非分隔符的連續(xù)字符的最大序列。
  • 如果標(biāo)志為 true,則分隔符本身被視為標(biāo)記。 因此,標(biāo)記要么是一個(gè)分隔符,要么是非分隔符的最大連續(xù)字符序列。

StringTokenizer 對(duì)象在內(nèi)部維護(hù)要標(biāo)記化的字符串中的當(dāng)前位置。 一些操作將當(dāng)前位置推進(jìn)到處理的字符之后。

通過(guò)獲取用于創(chuàng)建 StringTokenizer 對(duì)象的字符串的子字符串來(lái)返回令牌。

以下是使用分詞器的一個(gè)示例。 編碼:

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

打印以下輸出:

     this
     is
     a
     test

StringTokenizer 是一個(gè)遺留類(lèi),出于兼容性原因保留,但不鼓勵(lì)在新代碼中使用它。 建議任何尋求此功能的人改用 String 的 split 方法或 java.util.regex 包。

以下示例說(shuō)明了如何使用 String.split 方法將字符串分解為其基本標(biāo)記:

     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

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
StringTokenizer(String str) 為指定的字符串構(gòu)造一個(gè)字符串標(biāo)記器。
StringTokenizer(String str, String delim) 為指定的字符串構(gòu)造一個(gè)字符串標(biāo)記器。
StringTokenizer(String str, String delim, boolean returnDelims) 為指定的字符串構(gòu)造一個(gè)字符串標(biāo)記器。

方法總結(jié)

修飾符和類(lèi)型 方法 描述
int countTokens() 計(jì)算在生成異常之前可以調(diào)用此標(biāo)記器的 nextToken 方法的次數(shù)。
boolean hasMoreElements() 返回與 hasMoreTokens 方法相同的值。
boolean hasMoreTokens() 測(cè)試此標(biāo)記器的字符串中是否有更多標(biāo)記可用。
Object nextElement() 返回與 nextToken 方法相同的值,只是它聲明的返回值是 Object 而不是 String。
String nextToken() 從該字符串標(biāo)記器返回下一個(gè)標(biāo)記。
String nextToken(String delim) 返回此字符串標(biāo)記器的字符串中的下一個(gè)標(biāo)記。
從類(lèi) java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

StringTokenizer

public StringTokenizer(String str, String delim, boolean returnDelims)

為指定的字符串構(gòu)造一個(gè)字符串標(biāo)記器。 delim 參數(shù)中的所有字符都是分隔標(biāo)記的分隔符。

如果 returnDelims 標(biāo)志為 true,則分隔符也作為標(biāo)記返回。 每個(gè)分隔符都作為長(zhǎng)度為 1 的字符串返回。 如果標(biāo)志為 false,則跳過(guò)分隔符,僅用作標(biāo)記之間的分隔符。

請(qǐng)注意,如果 delim 為 null,則此構(gòu)造函數(shù)不會(huì)引發(fā)異常。 但是,嘗試在生成的 StringTokenizer 上調(diào)用其他方法可能會(huì)導(dǎo)致 NullPointerException。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
str 要解析的字符串。
delim 分隔符。
returnDelims 指示是否將分隔符作為標(biāo)記返回的標(biāo)志。

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果 str 為空

StringTokenizer

public StringTokenizer(String str, String delim)

為指定的字符串構(gòu)造一個(gè)字符串標(biāo)記器。 delim 參數(shù)中的字符是分隔標(biāo)記的分隔符。 分隔符本身不會(huì)被視為標(biāo)記。

請(qǐng)注意,如果 delim 為 null,則此構(gòu)造函數(shù)不會(huì)引發(fā)異常。 但是,嘗試在生成的 StringTokenizer 上調(diào)用其他方法可能會(huì)導(dǎo)致 NullPointerException。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
str 要解析的字符串。
delim 分隔符。

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果 str 為空

StringTokenizer

public StringTokenizer(String str)

為指定的字符串構(gòu)造一個(gè)字符串標(biāo)記器。 分詞器使用默認(rèn)分隔符集,即“\t\n\r\f”:空格字符、制表符、換行符、回車(chē)符和換頁(yè)符。 分隔符本身不會(huì)被視為標(biāo)記。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
str 要解析的字符串。

Throws:

Throw名稱(chēng) Throw描述
NullPointerException 如果 str 為空

方法詳情

hasMoreTokens

public boolean hasMoreTokens()

測(cè)試此標(biāo)記器的字符串中是否有更多標(biāo)記可用。 如果此方法返回 true,則后續(xù)調(diào)用不帶參數(shù)的 nextToken 將成功返回令牌。

返回:

當(dāng)且僅當(dāng)在當(dāng)前位置之后的字符串中至少有一個(gè)標(biāo)記時(shí)才為 true; 否則為 false。

nextToken

public String nextToken()

從該字符串標(biāo)記器返回下一個(gè)標(biāo)記。

返回:

此字符串標(biāo)記器的下一個(gè)標(biāo)記。

Throws:

Throw名稱(chēng) Throw描述
NoSuchElementException 如果此標(biāo)記器的字符串中沒(méi)有更多標(biāo)記。

nextToken

public String nextToken(String delim)

返回此字符串標(biāo)記器的字符串中的下一個(gè)標(biāo)記。 首先,將此 StringTokenizer 對(duì)象視為分隔符的字符集更改為字符串 delim 中的字符。 然后返回當(dāng)前位置之后的字符串中的下一個(gè)標(biāo)記。 當(dāng)前位置超出了識(shí)別的標(biāo)記。 新的分隔符集在此調(diào)用后仍為默認(rèn)值。

參數(shù):

參數(shù)名稱(chēng) 參數(shù)描述
delim 新的分隔符。

返回:

下一個(gè)標(biāo)記,在切換到新的分隔符集之后。

Throws:

Throw名稱(chēng) Throw描述
NoSuchElementException 如果此標(biāo)記器的字符串中沒(méi)有更多標(biāo)記。
NullPointerException 如果 delim 為空

hasMoreElements

public boolean hasMoreElements()

返回與 hasMoreTokens 方法相同的值。 它的存在是為了讓這個(gè)類(lèi)可以實(shí)現(xiàn) Enumeration 接口。

指定者:

接口 EnumerationObject 中的 hasMoreElements

返回:

如果有更多令牌,則為 true; 否則為 false。

nextElement

public Object nextElement()

返回與 nextToken 方法相同的值,只是它聲明的返回值是 Object 而不是 String。 它的存在是為了讓這個(gè)類(lèi)可以實(shí)現(xiàn) Enumeration 接口。

指定者:

接口 EnumerationObject 中的 nextElement

返回:

字符串中的下一個(gè)標(biāo)記。

Throws:

Throw名稱(chēng) Throw描述
NoSuchElementException 如果此標(biāo)記器的字符串中沒(méi)有更多標(biāo)記。

countTokens

public int countTokens()

計(jì)算在生成異常之前可以調(diào)用此標(biāo)記器的 nextToken 方法的次數(shù)。 當(dāng)前位置未提前。

返回:

使用當(dāng)前分隔符集在字符串中剩余的標(biāo)記數(shù)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)