Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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);

  }

}


Geschrieben

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...

Geschrieben

Na gut, wenns auch so einfach gehen sollte... Gerne :floet:

Nun ist erst mal Wochenende...

Geschrieben
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

Geschrieben

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]

Geschrieben
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

Geschrieben

Ich habe nur auf Nachfrage recherchiert. :D

Und weil es mich selbst interessiert hat.

Würde aber wenn es nicht Geschwindigkeits oder Systemkritisch ist, wahrscheinlich auch deine Lösung nehmen. :WD

Gruß Jaraz

Geschrieben

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 ;-)

Geschrieben
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

Geschrieben

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

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...