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() 检查是否还有可用令牌。
挑战
简单创建一个名为 tokenizeText 的方法,它接受两个参数:
- 一个要进行分词的 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 在线编译器