Сортировка строки по алфавиту с учетом условия

Как отсортировать содержимое строки по алфавиту, при этом числа должны остаться на своих местах.

Есть строка: Great43 WA1Y

Нужно получить, что-то на подобии: aegrt43 aw1y

Пробовал разбить на несколько массивов с учетом пробела.
Потом перебрать, но все равно сортировка происходит по всему массиву.
На выходе получаю 43aegrt 1awy, как быть с цифрами?

Буду премного благодарен, если подскажете. Можно объяснением или блоком кода.


Ответы (1 шт):

Автор решения: Олексій Моренець
static String parseAndSortLetters(String str) {
    String result = "";
    int current = 0;
    int end = str.length();
    while (current < end) {
        int start = current;
        while (current < end && Character.isAlphabetic(str.charAt(current))) {
            current++;
        }
        String substring = str.substring(start, current).toLowerCase();
        String sortedSubstring = Stream.of(substring.split("")).sorted().collect(Collectors.joining());
        result += sortedSubstring;

        while (current < end && !Character.isAlphabetic(str.charAt(current))) {
            result += str.charAt(current);
            current++;
        }
    }
    return result;
}

Добавьте проверку на null!!!

→ Ссылка