import java.util.ArrayList;
import java.util.List;
public class SplitKeepMultiDelims {
private static boolean isDelimChar(char c, String[] delims) {
for (String d : delims) {
if (!d.isEmpty() && d.charAt(0) == c) {
return true;
}
}
return false;
}
public static List<String> splitKeepMultiDelims(String s, String[] delims) {
List<String> result = new ArrayList<>();
int i = 0;
while (i < s.length()) {
char c = s.charAt(i);
if (isDelimChar(c, delims)) {
// Count repeated delimiter characters
int start = i;
while (i < s.length() && s.charAt(i) == c) {
i++;
}
result.add(s.substring(start, i));
} else {
// Collect normal text until next delimiter run
int start = i;
while (i < s.length() && !isDelimChar(s.charAt(i), delims)) {
i++;
}
result.add(s.substring(start, i));
}
}
return result;
}
public static void main(String[] args) {
String s = "aa==bbb---cccc++++ddddd";
String[] delims = {"=", "-", "+"};
List<String> parts = splitKeepMultiDelims(s, delims);
for (String p : parts) {
System.out.print("[" + p + "] ");
}
}
}
/*
run:
[aa] [==] [bbb] [---] [cccc] [++++] [ddddd]
*/