stringtokenizer支持多字符分隔符,只需将逗号(`,`)和换行符(`\n`)合并为一个字符串(如`",\n"`)传入构造函数,即可同时按两者切分字符串,无需正则或额外预处理。
StringTokenizer 的第二个构造参数接受一个分隔符集合(delimiter set),它会将该字符串中的每个字符都视为独立的分隔符,而非将其当作整体子串匹配。因此,传入 ",\n" 并非表示“先逗号后换行”的组合,而是告诉 StringTokenizer:遇到 , 或 \n 中的任意一个字符,就进行一次分割。
这意味着以下所有情况均会被正确识别为分隔位置:
✅ 正确用法示例:
String data = "hello apple, tree, wolf\neagle\nbadge";
StringTokenizer tokens = new StringTokenizer(data, ",\n"); // ✅ 同时指定逗号与换行符
while (tokens.hasMoreTokens()) {
String token = tokens.nextToken().trim(); // 建议 trim() 去除首尾空格
System.out.println("[" + token + "]");
}输出结果(已 trim):
[hello apple] [tree] [wolf] [eagle] [badge]
⚠️ 注意事项:
组合、忽略单独换行),应改用 String.split() 配合正则(例如:line.split(",\\s*|\\s*\\n\\s*"))。总结:要同时以逗号和换行符分隔,只需 new StringTokenizer(line, ",\n") —— 简洁、有效、无需额外依赖。