StringTokenizer
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 48/59。
StringTokenizer は、デリミタ(区切り文字)に基づいて文字列をトークン(より小さな部分)に分割するために使用されます。デフォルトでは、空白をデリミタとして使用します。
デフォルトの区切り文字(スペース)を使用して StringTokenizer を作成します:
StringTokenizer st = new StringTokenizer("Hello World Java");トークンをカウントして取得する:
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() を使用します。
チャレンジ
簡単2つの引数を受け取る tokenizeText という名前のメソッドを作成してください:
- トークン化する文字列 (
text) - 分割に使用する区切り文字 (
delimiter)
このメソッドは以下の処理を行う必要があります:
- 指定された text と 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));
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。