使用StringTokenizer实现
import java.util.StringTokenizer;
public class StringSplitExample {
public static void main(String[] args) {
String str = "a:;b:c,;d";
StringTokenizer tokenizer = new StringTokenizer(str, ":;,");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
}
}
使用String split方法实现
public class StringSplitExample {
public static void main(String[] args) {
String str = "a:;b:c,;d";
String[] parts = str.split("[;:,]");
for (String part : parts) {
System.out.println(part);
}
}
}
两者在处理复杂分隔符场景下的不同表现
- 语法与使用方式:
- StringTokenizer:构造函数直接接收字符串和分隔符,通过
hasMoreTokens()
和nextToken()
方法依次获取分割后的子串。
- String split:通过正则表达式指定分隔符,一次性返回所有分割后的子串组成的数组。
- 处理效率:
- StringTokenizer:相对高效,因为它是基于字符数组的扫描,不需要处理复杂的正则表达式。
- String split:如果分隔符是简单字符,效率尚可,但如果使用复杂正则表达式,会因为正则表达式的解析而有一定性能损耗。
- 空字符串处理:
- StringTokenizer:默认情况下,连续的分隔符会被视为一个分隔符,不会返回空字符串。
- String split:如果分隔符在字符串开头、结尾或者连续出现,会产生空字符串,在结果数组中会包含这些空字符串。