Разделить строку регулярным выражением и сохранить скобки

Есть строка, которую нужно разбить методом 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]
→ Ссылка