方案一:使用正则表达式拆分
- 原理:正则表达式具有强大的模式匹配能力,通过定义合适的模式来匹配分隔符,从而拆分字符串。
- 优势:灵活性高,可以处理复杂的分隔符模式,且在Java中
Pattern
和Matcher
类经过优化,性能表现较好。
- 核心代码示例:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class StringSplitExample {
public static void main(String[] args) {
String input = "a1#b1&c1@d1,a2#b2&c2@d2";
Pattern pattern = Pattern.compile("[#&@,]");
Matcher matcher = pattern.matcher(input);
int count = matcher.groupCount();
int lastIndex = 0;
while (matcher.find()) {
System.out.println(input.substring(lastIndex, matcher.start()));
lastIndex = matcher.end();
}
System.out.println(input.substring(lastIndex));
}
}
方案二:自定义拆分逻辑
- 原理:通过遍历字符串,手动识别分隔符位置,进行拆分。
- 优势:避免了正则表达式的编译开销,对于简单的分隔符情况,性能更好,代码执行效率高。
- 核心代码示例:
public class ManualStringSplit {
public static void main(String[] args) {
String input = "a1#b1&c1@d1,a2#b2&c2@d2";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c == '#' || c == '&' || c == '@' || c == ',') {
if (sb.length() > 0) {
System.out.println(sb.toString());
sb.setLength(0);
}
} else {
sb.append(c);
}
}
if (sb.length() > 0) {
System.out.println(sb.toString());
}
}
}
方案三:使用split
方法
- 原理:Java的
String
类的split
方法可以根据指定分隔符拆分字符串,内部做了一定优化。
- 优势:代码简洁,易于理解和编写,适用于常规的分隔符拆分场景。
- 核心代码示例:
public class SplitMethodExample {
public static void main(String[] args) {
String input = "a1#b1&c1@d1,a2#b2&c2@d2";
String[] parts = input.split("[#&@,]");
for (String part : parts) {
System.out.println(part);
}
}
}