# Zeichen im String löschen?



## Novanic (27. Nov 2006)

Hi Leute,

ich möchte ein bestimmtes Zeichen in Strings löschen.
Ich hätte jetzt gedacht:

meinString.replace(meinZeichen, leeresZeichen);

Aber dummerweise gibt es im J2ME-SDK nur die replace-Variante bei der man zwei Chars übergeben kann und ein Char kann ja kein Leerzeichen annehmen oder?

Hat jemand eine Idee wie sich das dennoch einigermaßen komfortabel lösen lässt?

Danke schonmal! 

Gruß Nova


----------



## The_S (27. Nov 2006)

Warum sollte ein char kein Leerzeichen annehmen können? Natürlich kann ein char ein Leerzeichen annehmen ...


```
char space = ' ';
```


----------



## Novanic (27. Nov 2006)

Oh da habe ich ein bisschen ungenau formuliert.
Ich meinte ein char ohne Zeichen, also: ''.
Bei der replace-Methode des JDKs würde ich replace("Z", ""); sagen aber da ein char nicht '' (0 bzw. keine Zeichen) annehmen kann, wird dies wohl nicht funktionieren oder gibt es einen Separator/Steuerzeichen um das zu lösen?

Oder welchen komfortablen Weg gibt es noch ein Zeichen aus einen String zu löschen (im J2ME-SDK)?

Gruß Nova


----------



## The_S (27. Nov 2006)

Hab noch nie mit J2ME gearbeitet, aber klappt das hier?


```
str.replace((CharSequence)"Z", (CharSequence)"");
```


----------



## Novanic (27. Nov 2006)

Nein, leider nicht, im J2ME-SDK gibt es kenie CharSequence.  Bei der replace-Methode von String kann man nur zwei chars übergeben, sonst nichts.

Gruß Nova


----------



## dieta (27. Nov 2006)

Wie wär's dann so:

```
str.replace('Z', '');
```


----------



## SlaterB (27. Nov 2006)

nicht erlaubt?


----------



## Novanic (27. Nov 2006)

Ja, ne das geht leider nicht. *g* Da wird ein Compiler-Fehler kommen.

Ich hab mir jetzt mal schnell eine eigene kleine Util-Methode geschrieben.
Den StringBuffer gibt es zum Glück auf im J2ME-SDK. 


```
public static String replace(String aString, char aReplaceable, String aReplacer)
    {
        StringBuffer theBuffer = new StringBuffer(aString);
        int theReplacePos = -1;
        do
        {
            theReplacePos = aString.indexOf(aReplaceable, theReplacePos + 1);
            if(theReplacePos >= 0)
            {
                theBuffer.deleteCharAt(theReplacePos);
                theBuffer.insert(theReplacePos, aReplacer);
            }
        }while(theReplacePos >= 0);
        return theBuffer.toString();
    }
```

Trotzdem danke für die Hilfe! 

Gruß Nova


----------



## Nap am Lap.. (3. Dez 2006)

da hab ich auch ne frage zu! gibs nen befehl zum löschen der leerzeichen aus einem string?

ich meine nicht die anfangs oder endleerzeichen


----------



## dieta (3. Dez 2006)

Nein, das musst du mit replace oder ähnlichen Methoden machen.


----------



## Novanic (3. Dez 2006)

Wobei das im J2ME-SDK mit replace nicht möglich ist. Deswegen hab ich ja meine Replace-Lösung entwickelt. Die kannst du dafür auch nutzen.

Der Aufruf würde dann so aussehen:


```
String theString = "String mit Leerzeichen";

theString = replace(theString, ' ', "");
```

Gruß Nova


----------



## Nap am Lap (3. Dez 2006)

ups ich bin bei mir von jdk ausgagangen net von j2me.

hmm muß ich mir die methode umschreiben. Danke auf jedenfall


----------



## Novanic (3. Dez 2006)

Na dann bist hier aber im falschem Forum. ;-)

Dann kannst du auch die normale, fertige replace-Methode benutzen:


```
String theString = "String mit Leerzeichen";
theString.replace(" ", "");
```

Gruß Nova


----------



## Gast (24. Sep 2007)

Zum löschen der Leerzeichen kannst du (so weit ich weiß) ".trim verwenden.
Bsp.
String test = test test test test;
test.trim;

test sollte jetzt testtesttesttest sein.


----------



## SlaterB (24. Sep 2007)

alten Thread ausgraben und dann auch noch irgendwelche Unwahrheiten schreiben?

5 Stunden stellt das niemand richtig? 
na kann ja jeder selber testen, nicht so gefährlich, 
warum hast du als Gast es aber nicht getesten? 

also trim() entfernt nur Leerzeichen am Anfang und Ende des Strings, nicht alle auch in der Mitte

zumal es 
String test = "test test test test";
und vor allem
test = test.trim(); 
heißen müsste


----------



## Kidao (15. Okt 2007)

Novanic hat gesagt.:
			
		

> Ja, ne das geht leider nicht. *g* Da wird ein Compiler-Fehler kommen.
> 
> Ich hab mir jetzt mal schnell eine eigene kleine Util-Methode geschrieben.
> Den StringBuffer gibt es zum Glück auf im J2ME-SDK.
> ...




Hallo!

Keine Schlechte Methode, hat mir geholfen, nur leider ist die so nicht ganz richtig...würde mich wundern, wenn du sie so verwenden könntest. Das Problem bei dir ist, dass er die Leerzeichenposition aus dem Original-String holt und diese Position auf die gebufferte Zeichenkette überträgt und genau hier kommt es zum Problem, denn wenn die Methode die erste Leerstelle gelöscht hat, befindet sich das nächste Leerzeichen nicht an der selben Position wie im Original-String.

Bsp:

"1 2 3"  (Positionen "01234")
1. Durchlauf:
Leerzeichen aus dem Orig.-String an der Position 1 erkannt,
Leezeichen gelöscht
theBuffer = "12 3"   (Leerzeichen an der Position 2)

2. Durchlauf
Leerzeichen aus dem Original-String an der Position 3 erkannt
Position 3 ist aber im theBuffer ist "3" also wir "3" und nicht das Leerzeichen gelöscht.



Das Problem kann man aber ganz einfach lösen, indem man den String, in dem nach dem Leerzeichen gesucht wird, mit "aString = theBuffer.toString();" aktualisiert.

```
public static String replace(String aString, char aReplaceable, String aReplacer)
    {
        StringBuffer theBuffer = new StringBuffer(aString);
        int theReplacePos = -1;
        do
        {
            aString = theBuffer.toString();      // String aktualisieren
            theReplacePos = aString.indexOf(aReplaceable, theReplacePos + 1);
            if(theReplacePos >= 0)
            {
                theBuffer.deleteCharAt(theReplacePos);
                theBuffer.insert(theReplacePos, aReplacer);
            }
        }while(theReplacePos >= 0);
        return theBuffer.toString();
    }
```

MfG 
Kidao


----------



## Guest (11. Dez 2007)

Gast hat gesagt.:
			
		

> Zum löschen der Leerzeichen kannst du (so weit ich weiß) ".trim verwenden.
> Bsp.
> String test = test test test test;
> test.trim;
> ...



ich glaube die Methode trim nimmt nur die leerzeichen vom Anfang und Ende des Strings

also wenn es heisst: "  hallo  ".trim() dann kommt raus "hallo"
gruß


----------



## Guest (11. Dez 2007)

ok wurde schon geschrieben^^


----------



## Backwardsman (13. Dez 2007)

es kann ja wohl nicht so schwer sein, eine methode zu schreiben die einen string nach einem zeichen durchsucht und es entfernt... das hat ja nicht mal was mit j2me zu tun. ich glaube das lesen dieses threads dauert länger, als so ne methode zu basteln :-D


----------

