Menu
CoddyTech

StringTokenizer

本课属于 Coddy Java 学习旅程的“逻辑与流程”单元。第 48 课,共 59 课。

StringTokenizer 用于根据分隔符将字符串拆分为令牌(更小的部分)。默认情况下,它使用空白字符作为分隔符。

使用默认分隔符(空格)创建一个 StringTokenizer:

StringTokenizer st = new StringTokenizer("Hello World Java");

要使用其他字符分割,请将它作为第二个参数传入。该字符串中的每个字符都会单独作为分隔符:

StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens());  // 输出:3

统计并获取令牌:

int count = st.countTokens();
// 获取 token 的数量
String first = st.nextToken();
// 获取下一个 token

运行上面的代码后,变量包含:

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() 检查是否还有可用令牌。

challenge icon

挑战

简单

创建一个名为 tokenizeText 的方法,它接受两个参数:

  1. 一个要进行分词的 String(text)
  2. 一个用于拆分的 String(delimiter)

该方法应:

  1. 使用给定的文本和分隔符创建一个 StringTokenizer
  2. 返回一个字符串,其中包含令牌数量,后面每行一个令牌

返回的消息应为:

  • 如果 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));
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Java 在线编译器