Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Spaces aus String entfehrnen

Empfohlene Antworten

Veröffentlicht

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

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

  }

}


Ja danke für die Antwort. Ich habe es ähnlich gelöst. Ich frag mich nur wofür es die replace Methode gibt....

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

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

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

Nun ist erst mal Wochenende...

replace (" ","");

funzt leider nicht weil er 2 chars erwartet.

Schönes WOCHENENDE!!!!! :marine

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

wo ist der vorteil wenn ich einen stringbuffer verwende?

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]

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

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

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

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

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.