Naberius Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 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...
Gast roaxius Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 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); } }
Naberius Geschrieben 23. Mai 2003 Autor Geschrieben 23. Mai 2003 Ja danke für die Antwort. Ich habe es ähnlich gelöst. Ich frag mich nur wofür es die replace Methode gibt....
kingofbrain Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 Also noch was leichtes zum Schluss In der API Dok für String steht direkt unter replace replaceAll Füg mal das ein: replaceAll(" ", "") Peter
Gast roaxius Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 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...
Gast roaxius Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 Na gut, wenns auch so einfach gehen sollte... Gerne :floet: Nun ist erst mal Wochenende...
Naberius Geschrieben 23. Mai 2003 Autor Geschrieben 23. Mai 2003 replace (" ",""); funzt leider nicht weil er 2 chars erwartet. Schönes WOCHENENDE!!!!! :marine
Jaraz Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 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
Naberius Geschrieben 23. Mai 2003 Autor Geschrieben 23. Mai 2003 wo ist der vorteil wenn ich einen stringbuffer verwende?
kingofbrain Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 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]
Jaraz Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 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
jan76 Geschrieben 23. Mai 2003 Geschrieben 23. Mai 2003 wieso immer alles selber bauen, nimm das hier: http://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/StringUtils.html#deleteWhitespace(java.lang.String)
kingofbrain Geschrieben 24. Mai 2003 Geschrieben 24. Mai 2003 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
Jaraz Geschrieben 24. Mai 2003 Geschrieben 24. Mai 2003 Ich habe nur auf Nachfrage recherchiert. 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
jan76 Geschrieben 24. Mai 2003 Geschrieben 24. Mai 2003 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 ;-)
Jaraz Geschrieben 24. Mai 2003 Geschrieben 24. Mai 2003 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
jan76 Geschrieben 24. Mai 2003 Geschrieben 24. Mai 2003 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
Jaraz Geschrieben 24. Mai 2003 Geschrieben 24. Mai 2003 Deswegen auch die Wörter "unbedingt" und "sollte". Aber ich glaube das Problem ist gelöst und wir sind nun alles etwas schlauer. Gruß Jaraz
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden