Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

ich möchte sämtlich Space aus einem String entfehrnen. Ich habe hierzu schon die replace() Methode auspropiert: myString.replace(' ', '');

Aber das funktioniert nicht...

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

Aha, der Jaraz wieder.

Kaum mach ich einen genialen Vorschlag, da kommt er mit einem Besseren... ;)

Nein, im Ernst, auf Geschwindigkeit habe ich da nicht geschaut, nur auf Schnelligkeit (beim implementieren ;)

Peter

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

Geschrieben

Deswegen auch die Wörter "unbedingt" und "sollte". ;)

Aber ich glaube das Problem ist gelöst und wir sind nun alles etwas schlauer. :D

Gruß Jaraz

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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