Veröffentlicht 23. Mai 200322 j 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...
23. Mai 200322 j 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); } }
23. Mai 200322 j Ja danke für die Antwort. Ich habe es ähnlich gelöst. Ich frag mich nur wofür es die replace Methode gibt....
23. Mai 200322 j 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
23. Mai 200322 j 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...
23. Mai 200322 j Na gut, wenns auch so einfach gehen sollte... Gerne :floet: Nun ist erst mal Wochenende...
23. Mai 200322 j replace (" ",""); funzt leider nicht weil er 2 chars erwartet. Schönes WOCHENENDE!!!!! :marine
23. Mai 200322 j 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
23. Mai 200322 j 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]
23. Mai 200322 j 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
23. Mai 200322 j 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)
24. Mai 200322 j 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
24. Mai 200322 j 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
24. Mai 200322 j 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 ;-)
24. Mai 200322 j 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
24. Mai 200322 j 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
24. Mai 200322 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.