Java 中的StringTokenizer類別提供了String分詞器方法,用於根據指定的分隔符號將字串拆分為標記。標記器字串可以是分隔標記的任何字串,例如逗號、分號或空格。使用StringTokenizer類別的tokenizer String方法,我們可以將字串拆分為其組成部分。透過呼叫nextToken()方法,我們可以依序檢索每個令牌,並使用hasMoreTokens()方法,我們可以檢查是否還有剩餘的令牌。StringTokenizer類別的 length() 方法可用來取得每個標記的長度。StringTokenizer String是一個有用的字串操作工具,可用於解析 CSV 檔案、URL 或其他基於文字的資料。StringTokenizer類別是Java.util套件的一部分,提供了將字串拆分為標記的簡單方法。這個類別有兩個建構函數,一個建構函數採用要標記化的字串和分隔符字元或字串,另一個建構函數採用相同的參數以及指示是否將分隔符號作為標記包含的布林標誌。建立StringTokenizer物件後,您可以使用其各種方法來迭代標記並對它們執行各種操作。
標記化方法
標記化方法是將字串分割成更小的部分或標記的過程。此過程是使用分隔符號執行的,分隔符號可以是分隔每個標記的字元或字串。例如,考慮以下字串:String input = "Hello World! How are you today?";
如果我們想將此字串拆分為單獨的單字,我們可以使用空格字元作為分隔符,如下所示:
StringTokenizer tokenizer = new StringTokenizer(input, " ");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
System.out.println(token);
}
輸出
你好世界!你今天怎麼樣?
在此範例中,我們使用輸入字串和空格字元作為分隔符號來建立一個新的StringTokenizer物件。然後,我們使用hasMoreTokens()方法循環存取令牌,並使用nextToken()方法檢索每個令牌。最後,我們將每個令牌列印到控制台。
令牌長度
除了nextToken()方法提供的基本功能之外,StringTokenizer類別還提供用於檢索每個標記的長度以及透過索引檢索特定標記的方法。若要取得目前令牌的長度,可以使用token.length()方法。例如:public class StringTokenizerExample {
public static void main(String[] args) {
String input = "Hello World! How are you today?";
StringTokenizer tokenizer = new StringTokenizer(input, " ");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
System.out.println("Token: " + token + " Length: " + token.length());
}
}
}
輸出
標記:Hello 長度:5 標記:世界!長度:6 令牌:怎麼樣 長度:3 令牌:是 長度:3 令牌:你 長度:3 令牌:今天?長度:6
在此範例中,我們像以前一樣檢索每個標記,但也使用length()方法來取得每個標記的長度,然後將其列印到控制台。
例子
讓我們來看一個完整的範例,示範如何在 Java 中 使用StringTokenizer類別:public class Example {
public static void main(String[] args) {
String input = "John,Doe,123 Main St.,Anytown,USA";
StringTokenizer tokenizer = new StringTokenizer(input, ",");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
}
}
輸出
John Doe 123 Main St. Anytown 美國
在此範例中,我們有一個字串,表示以逗號分隔的值清單。我們使用該字串和逗號作為分隔符號來建立一個新的StringTokenizer物件。然後,我們使用hasMoreTokens()方法循環存取令牌,並使用nextToken()方法檢索每個令牌。最後,我們將每個令牌列印到控制台。請注意,在此範例中我們沒有使用length()方法,因為我們只對各個標記本身感興趣。
GO TO FULL VERSION