Удаление последовательности string

Всем привет. Понимаю, что тема заезжена но никак не могу понять. Кто может объяснить как удалить все повторяющиеся цифры не трогая буквы? “abcd111” // abcd1


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

Автор решения: TrampDi

Раз никто пока не ответил, можешь попробовать такое решение на Python с проверкой на цифру

str = 'abcd111'
i = 0
while i  < len(str)-1:
    if str[i].isdigit() and str[i] == str[i+1]:
        str = str[:i] + str[i+1:]
    else :
        i = i+1

А вот пример на SQL :)

SELECT regexp_replace('3333aaaacc11111', '([0-9]{1})\1*', '\1') FROM dual

Вот для джавы, комментарии пока оставлять не могу :о

String str = "abcd111";
str = str.replaceAll("([0-9])\\1+", "$1")

;

→ Ссылка
Автор решения: Barmaley Red Star

На Java писать надо приблизительно так:

String s = "abcd111";
StringBuilder sb=new StringBuilder();

for(int i=0; i < s.length(); i++) {
    if (i < (s.length()-1) && Character.isDigit(s.charAt(i)) && s.charAt(i) == s.charAt(i+1))
        continue;
    else
        sb.append(s.charAt(i));
 }
 System.out.println(sb.toString());
→ Ссылка
Автор решения: Artem Konovalov

Можно сделать так:

String str = "abcd111";
Optional<String> result = str.chars()
                .mapToObj(Character::toString)
                .reduce((e1, e2) -> e1.charAt(e1.length() - 1) == e2.charAt(0) ? e1 : e1 + e2);
result.ifPresent(System.out::println);

вывод:

abcd1

→ Ссылка