Naberius Geschrieben 23. Mai 2003 Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 23. Mai 2003 Teilen 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); } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Naberius Geschrieben 23. Mai 2003 Autor Teilen 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.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 23. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 23. Mai 2003 Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast roaxius Geschrieben 23. Mai 2003 Teilen Geschrieben 23. Mai 2003 Na gut, wenns auch so einfach gehen sollte... Gerne :floet: Nun ist erst mal Wochenende... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Naberius Geschrieben 23. Mai 2003 Autor Teilen Geschrieben 23. Mai 2003 replace (" ",""); funzt leider nicht weil er 2 chars erwartet. Schönes WOCHENENDE!!!!! :marine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 23. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Naberius Geschrieben 23. Mai 2003 Autor Teilen Geschrieben 23. Mai 2003 wo ist der vorteil wenn ich einen stringbuffer verwende? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 23. Mai 2003 Teilen 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 23. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jan76 Geschrieben 23. Mai 2003 Teilen 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) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 24. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 24. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jan76 Geschrieben 24. Mai 2003 Teilen 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 ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 24. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jan76 Geschrieben 24. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 24. Mai 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.