C# String.Split(string[], StringSplitOptions) 支持字符串數組作為多重分隔符。Java String.split(String regex) 僅支持正則表達式單一模式。
public class StringUtils {
/** 多字符串分隔符分割,自動轉義特殊字符 */
public static String[] split(String str, String[] delimiters) {
if (str == null || delimiters == null || delimiters.length == 0) {
return new String[]{str};
}
StringBuilder regex = new StringBuilder();
for (int i = 0; i < delimiters.length; i++) {
if (i > 0) regex.append('|');
regex.append(Pattern.quote(delimiters[i])); // 自動轉義正則元字符
}
return str.split(regex.toString());
}
/** 支持 StringSplitOptions.RemoveEmptyEntries */
public static String[] split(String str, String[] delimiters, boolean removeEmpty) {
String[] parts = split(str, delimiters);
if (!removeEmpty) return parts;
return Arrays.stream(parts).filter(s -> !s.isEmpty()).toArray(String[]::new);
}
}
String[] seps = {"<<", ">>", "##"};
String text = "A<>C##D";
String[] tokens = StringUtils.split(text, seps, true);
// 結果: ["A", "B", "C", "D"]
沒有就自己寫個…………