Rekursives replaceAll java [duplizieren]

7

Ich versuche, alle wiederholten Zeichen aus einem String in Java zu ersetzen, und laß nur eins.

Zum Beispiel:

aaaaa --- & gt; a

Dafür habe ich versucht, die Methode replaceAll zu verwenden:

%Vor%

Ich habe eine rekursive Methode entwickelt, die wahrscheinlich nicht sehr effizient ist:

%Vor%

Diese Methode funktioniert, ich habe mich nur gefragt, ob es irgendwas mit RegEx zum Beispiel gibt, was die Arbeit mit besserer Leistung macht.

    
Mayday 07.04.2016, 11:09
quelle

2 Antworten

12

Ihr replaceAll -Ansatz war fast richtig - es ist nur so, dass * 0 Vorkommen entspricht. Sie möchten + "eins oder mehr" bedeuten.

%Vor%     
Jon Skeet 07.04.2016, 11:12
quelle
7

Sie können es ohne Rekursion tun. Der reguläre Ausdruck "(.)\1+" erfasst jedes Zeichen, das von ihnen selbst gefolgt wird mindestens einmal und ersetzt sie durch das eingefangene Zeichen. Dadurch werden alle wiederholten Zeichen entfernt.

%Vor%

Damit funktioniert es für alle Charaktere.

    
Tunaki 07.04.2016 11:13
quelle

Tags und Links