Umlaute eines Strings entfernen (Verwendung von this?)

  • Themenstarter Themenstarter Final Griever
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
F

Final Griever

Gast
Hallo.
Ich habe mir mal eine Methode zusammengebastelt, welche die Umlaute eines Strings (also ä, ö & ü, Großschreibung zu vernachlässigen) entfernen soll.
Code:
static String entferneUmlaute(String a)
	 {
		 		a.replaceAll("ä", "");
		 		a.replaceAll("ö", "");
		 		a.replaceAll("ü", "");
		 		
		 		return a;
	 }

Wenn ich aber mithilfe von println den Rückgabewert a ausgeben möchte, wurde nichts ersetzt.

Code:
System.out.println(entferneUmlaute("Apfelbäume erfüllen mich mit Ödipus-Komplexen.")) // → "Apfelbäume erfüllen mich mit Ödipus-Komplexen."

Liegt es daran, dass beim replaceAll ein neuer String erzeugt wird?


▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Desweiteren wäre es ja nützlicher, wenn man einfach
String.entferneUmlaute “ ("Hällo".entferneUmlaute → "Hllo")
schreiben würde.
Ich habe mich schon durchgegoogelt, aber nichts gefunden. In Ruby kann man so etwas mit self machen.
Probiert habe ich auch schon, es mit this zu machen, aber das funktioniert auch nicht.

Es wäre nett, wenn ihr mich vielleicht etwas Hilfe / ein paar Tipps geben könntet, und Danke fürs Durchlesen 🙂.
Final Griever
 
Liegt es daran, dass beim replaceAll ein neuer String erzeugt wird?

Ganz genau, Strings sind "Immutable" also unveränderlich. Alle Operationen darauf erzeugen nur einen
neuen String auf Basis des alten. Also immer:

Code:
s = s.TueWas();

Desweiteren wäre es ja nützlicher, wenn man einfach
„String.entferneUmlaute “ ("Hällo".entferneUmlaute → "Hllo")
schreiben würde.

Dafür müsstest du die vorgegebene Klasse String der Java API überschreiben.
Und das lass mal lieber bleiben 😉 (Weiss gar nicht ob das überhaupt möglich ist)
 
Danke! 🙂
Also muss ich es wohl so schreiben:
Code:
  static String entferneUmlaute(String a)
	 { 
		 		String neuer_string = a; 
		 		neuer_string = neuer_string.replaceAll("ä", "");
		 		neuer_string =neuer_string.replaceAll("ö", "");
		 		neuer_string =neuer_string.replaceAll("ü", "");
		 		
		 		return neuer_string;
	 }

Und – es funktioniert sogar.

Ich schreibe es lieber so, da ich

Code:
static String entferneUmlaute(String a)
	 { 
		 			 		return a.replaceAll("ä", "").replaceAll("ö", "")..replaceAll("ü", "");
	 }
irgendwie so beklämmend (beklammernd ;P) finde.

Aber lass mich raten – Bsp1 ist schlechter Stil und man sollte deswegen lieber Bsp2 benutzen?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben