StringTokenizer
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 48/59。
StringTokenizerは、区切り文字に基づいて文字列をトークン(より小さな部分)に分割するために使用されます。デフォルトでは、空白が区切り文字として使用されます。
デフォルトの区切り文字(スペース)を使ってStringTokenizerを作成します:
StringTokenizer st = new StringTokenizer("Hello World Java");別の文字で分割するには、それを第2引数として渡します。その文字列内の各文字が、それぞれ独立した区切り文字になります:
StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens()); // 出力: 3トークンを数えて取得する:
int count = st.countTokens();
// トークンの数を取得する
String first = st.nextToken();
// 次のトークンを取得する上記のコードを実行すると、変数には次の値が含まれます:
count: 3
first: "Hello"重要: トークンは消費されます!
nextToken()を呼び出すと、そのトークンはトークナイザーから削除されます。countTokens()メソッドは、残っているトークンの数を返します。
StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens()); // 出力: 3
st.nextToken(); // "Hello" を消費
System.out.println(st.countTokens()); // 出力: 2 (3 ではない!)
st.nextToken(); // "World" を消費
System.out.println(st.countTokens()); // 出力: 1ヒント: トークンの総数を知る必要がある場合は、トークンを消費する前にcountTokens()を呼び出してください。反復処理中に利用可能なトークンがまだあるかどうかを確認するには、hasMoreTokens()を使用してください。
チャレンジ
簡単tokenizeTextという名前のメソッドを作成します。このメソッドは次の2つの引数を取ります。
- トークン化するString(
text) - 分割に使用するString(
delimiter)
このメソッドは次の処理を行います。
- 指定されたテキストと区切り文字を使ってStringTokenizerを作成する
- トークン数の後に、各トークンを新しい行に続けた文字列を返す
返すメッセージは次のとおりです。
- textがnullの場合:"Invalid text"を返す
- delimiterがnullの場合:区切り文字としてスペースを使用する
- 形式:"Token count: X\nToken: token1\nToken: token2\n..."
自分で試してみよう
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static String tokenizeText(String text, String delimiter) {
// ここにコードを書いてください
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String delimiter = scanner.nextLine();
if (text.equals("null")) text = null;
if (delimiter.equals("null")) delimiter = null;
System.out.println(tokenizeText(text, delimiter));
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ