Разделить строку регулярным выражением и сохранить скобки
Есть строка, которую нужно разбить методом split() на токены. Например такая: "{abcdefg}". При этом я должен получит следующие токены: "{", "abcdefg", "}". Вопрос: как мне сохранить скобки?
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Не регулярки, но раз я код написал, не пропадать же добру
public static ArrayList<String> splitMe(String input) {
ArrayList<String> ret = new ArrayList<>();
if (input == null || input.length() == 0)
return ret;
int ind = 0;
while (ind < input.length()) {
while (ind < input.length() && (input.charAt(ind) == '{' || input.charAt(ind) == '}')) {
ret.add(new String(new char[] { input.charAt(ind) }));
ind++;
}
int start = ind;
while (ind < input.length() && (input.charAt(ind) != '{' && input.charAt(ind) != '}'))
ind++;
if (start < input.length())
ret.add(input.substring(start, ind));
}
return ret;
}
Проверка
System.out.println(splitMe("qqq{111}{2222}{}{}{}333"));
Результат
[qqq, {, 111, }, {, 2222, }, {, }, {, }, {, }, 333]