Zum Inhalt springen

Spaces aus String entfehrnen


Naberius

Empfohlene Beiträge

Wie wäre es, wenn du folgendes probierst:

Habe jetzt leider keine Umgebung, um es selbst zu testen:



String strQuelle = "Dies ist der String, aus dem die Leerzeichen weg sollen."

String strTemp = " ";


for(int i=0; i < strQuelle.length(); i++) {

  if (strQuelle.charAt(i) != ' ') {

    strTemp = strTemp + strQuelle.charAt(i);

  }

}


Link zu diesem Kommentar
Auf anderen Seiten teilen

Nun ja, die funktioniert eigentlich wunderbar...

Ich weiss nur nicht, ob du, so wie du das wolltest, "etwas" durch "nichts" ersetzen kannst... Würdest du das Leerzeichen durch ein anderes Zeichen ersetzen, würde es auch funktionieren...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Daedalus81

Wie wäre es, wenn du folgendes probierst:

Habe jetzt leider keine Umgebung, um es selbst zu testen:




String strQuelle = "Dies ist der String, aus dem die Leerzeichen weg sollen."

String strTemp = " ";


for(int i=0; i < strQuelle.length(); i++) {

  if (strQuelle.charAt(i) != ' ') {

    strTemp = strTemp + strQuelle.charAt(i);

  }

}


Hhmm, ich weiss nicht, ob der Compiler das oben optimiert, aber ich würde direkt 2 Stringbuffer benutzen und dann von den einen in den anderen kopieren und halt nur die Leerzeichen weglassen.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Naberius,

es ist zwar Freitag, aber lies doch nochmal kurz mein Posting Nr. 1. Dort ist die Rede von replaceAll, nicht replace. Und das replaceAll erwartet zwei Strings.

Hier mal ein kleines Beispielprogramm, dass Du nur kompilieren und ausführen musst.

Schönes Wochenende,

Peter


public class AusStringLeerzeichenEntferner
{
public static void main(String[] args)
{
String text = "Ein Text mit Leerzeichen - manchmal sogar mehreren ";

System.out.println(text.replaceAll(" ", ""));
}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Naberius

wo ist der vorteil wenn ich einen stringbuffer verwende?

Bei kleinem Text ist der Nachteil verschwindent gering.

Allerdings werden bei deiner Methode in dieser Zeile:

strTemp = strTemp + s.charAt(i);

mehrere temporäre String Objecte erzeugt.

Das ist im Vergleich zu dem was du erreichen willst, sehr teuer.

Besser wäre folgendes:


    StringBuffer in = new StringBuffer(inString);

    StringBuffer out = new StringBuffer();

    for (int i = 0; i < in.length(); i++) {

      if (in.charAt(i) != ' ') {

        out.append(in.charAt(i));

      }

    }

     String outString = out.toString();

Ist bei mir um den Faktor 400 :eek: schneller.

Und doppelt so schnell wie replaceAll von kob. ;)

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

noch ne optimierungsmöglichkeit:


    final StringBuffer in = new StringBuffer(inString);

    final int laenge = in.length();

    StringBuffer out = new StringBuffer(inString.length()); // gleich Grösse festlegen

    for (int i = 0; i < laenge; i++) { // Laenge nicht jedesmal abfragen

      if (in.charAt(i) != ' ') {

        out.append(in.charAt(i));

      }

    }

     String outString = out.toString();

viel spass beim testen ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von jan76

StringBuffer out = new StringBuffer(inString.length()); // gleich Grösse festlegen

Nicht unbedingt sinnvoll, da wir ja Zeichen entfernen wollen.

Original geschrieben von jan76

for (int i = 0; i < laenge; i++) { // Laenge nicht jedesmal

Sollte keinen Unterschied machen.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

zitat:

--------------------------------------------------------------------------------

Original geschrieben von jan76

StringBuffer out = new StringBuffer(inString.length()); // gleich Grösse festlegen

--------------------------------------------------------------------------------

Nicht unbedingt sinnvoll, da wir ja Zeichen entfernen wollen.

je nachdem, wieviele Spaces drin sind macht das einen Unterschied, da der StringBuffer sonst intern seine Grösse anpassen (erweitern) muss, wenn er an seine Grenzen stösst

zitat:

--------------------------------------------------------------------------------

Original geschrieben von jan76

for (int i = 0; i < laenge; i++) { // Laenge nicht jedesmal

--------------------------------------------------------------------------------

Sollte keinen Unterschied machen.

kommt auf den Compiler an ;-) gute erkennen das natürlich

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...