Hallo,
ich würde gerne die Leerzeichen in einem String entfernen.
Ich weiß es gibt Methoden, die zur Verfügung stehen, die das machen,
aber meine Aufgabe besteht darin selber eine Methode dafür zu entwerfen.
Leider funktioniert die Lösung nicht und ich habe schon lange dran gesessen und weiß nicht mehr weiter.
Die eigentliche Idee war den Text in einen neuen String char für char zu kopieren und die Leerzeichen
zu überspringen.
Vielleicht kann ja jmd helfen.
Vielen Dank.
Java:
publicstaticvoidmain(String[] args){String text ="He lo";String bereinigt ="";char leer ='\u0000';for(int i =0; i < text.length(); i++){
bereinigt += text.charAt(i);if(text.charAt(i)==' '){//Wenn Lerrzecihen an der Stelle...
leer = text.charAt(i);//...dann soll aus " " ein "" werden, Leerzeichen soll verschweinden
bereinigt += text.charAt(i);}}System.out.println(bereinigt);}
Der Ansatz sollte immer sein: Überlege Dir den Algorithmus im Detail. Dazu hilft auch immer: Mal Dir auf, was du machst und gehe es Schritt für Schritt durch.
Was machst Du denn mit Stift und Papier? Du hängst ein Zeichen einfach dran? Und wenn Du dann danach feststellst, dass Du das Zeichen nicht willst, nimmst Du einen Tintenkiller und löscht es wieder?
Auf den vorhandenen Algorithmus gehe ich nicht weiter im Detail ein - da hast Du aber irgend sowas gemacht nur eben hast Du keinen Tintenkiller - der ist auch schlicht Unsinn (wie Dir hoffentlich auch bewusst ist!).
Der Ansatz sollte immer sein: Überlege Dir den Algorithmus im Detail. Dazu hilft auch immer: Mal Dir auf, was du machst und gehe es Schritt für Schritt durch.
Was machst Du denn mit Stift und Papier? Du hängst ein Zeichen einfach dran? Und wenn Du dann danach feststellst, dass Du das Zeichen nicht willst, nimmst Du einen Tintenkiller und löscht es wieder?
Auf den vorhandenen Algorithmus gehe ich nicht weiter im Detail ein - da hast Du aber irgend sowas gemacht nur eben hast Du keinen Tintenkiller - der ist auch schlicht Unsinn (wie Dir hoffentlich auch bewusst ist!).
Man kann, wie bei meinem Algorithmus zu sehen ist, stück für stück den einen String mit dem werten des andres Strings füllen also:
bereinigt+=text.charAti(i);
Aber so etwas wie:
bereinigt-=text.charAti(i) gibt es nicht oder
Nein, das gibt es nicht. Aber vergiss erst einmal diesen konkreten Punkt und auch alles was Java angeht.
Die Kernfrage ist: Wie machst Du das in der Praxis? Du hast Stift und Papier und sonst nichts. Und Leerzeichen schreibst Du als Unterstrich. Damit ist das Leerzeichen auch geschrieben. Nun schreibst Du etwas ab - und sollst Leerzeichen weg lassen.
Wie machst Du das? Hast Du Dir das schon einmal überlegt? Du hast nur einen Stift und kannst Geschriebenes nicht mehr löschen. Also wie gehst Du vor?
Das mag Dir jetzt komisch vorkommen, aber das ist existenziell. Also auch wenn es Dir wie Kindergarten vorkommt: Spiel es doch einmal durch! Und versuch dabei Dir jeden Schritt bewusst zu machen!
Noch was ... tu deinem Computer einen Gefallen und erstelle mit += nicht ständig neue Strings. Verwende einen StringBuilder, an den du deine nicht rauszufinlternden Zeichen anhängst. Die rauszufilternden ignorier einfach.
Noch was ... tu deinem Computer einen Gefallen und erstelle mit += nicht ständig neue Strings. Verwende einen StringBuilder, an den du deine nicht rauszufinlternden Zeichen anhängst. Die rauszufilternden ignorier einfach.
Sorry, dass ich erst jetzt darauf antworte. Ich muss aber trotzdem zu dem Thema "StringBuilder" mal eine Bemerkung loswerden.
Die Konkatenierung von Strings mit + oder += wird immer als ein großes NOGO dargestellt. Das ist eine völlig überholte Ansicht und galt noch in einer Zeit als ich Java gelernt habe 👴. Mittlerweile ist es so, dass der Compiler/JVM so etwas sehr gut optimiert. Tatsächlich haben wir dazu mal, vor ca. 1 Jahr, einen Test durchgeführt und das Ergebnis wird Einige überraschen: bei unserem Test war += etwas schneller als StringBuilder. Bei dem Test haben wir den Speicher der JVM immer weiter reduziert und konnten keine eindeutigen Anzeichen dafür finden, welche Variante besser mit dem Speicher umgeht. Die Compiler/Laufzeit-Optimierung ist auch sehr gut dokumentiert.
Hier eine kurze Zusammenfassung: https://medium.com/javarevisited/java-compiler-optimization-for-string-concatenation-7f5237e5e6ed
Das bedeutet nicht, dass man grundsätzlich auf StringBuilder verzichten soll. Ich will damit nur einmal darauf hinweisen, dass die reflexhafte und gebetsmühlenartige Verteufelung der Konkatenierung von Strings vollkommen übertrieben ist.