# string evt. letztes Zeichen löschen



## jaus (30. April 2006)

Moin zusammen,

hab folgendes Prblem. Ich habe ein string mit beispielweise dem Inhalt:

"Test;;"

Am Ende sind zwei ;, aber die dürfen da nicht sein, also müssen sie gelöscht werden. Also folgendes:

Brauche einen Algorithmus, der erst guckt, ob das letzte Zeichen ein ; ist und wenn ja soll er es löschen. Das soll solange gemacht werden, bis dort kein ; mehr steht... Wie geht es?!

Ich verzweifel total an den Methoden find_for_last und erase...

Bitte helfe mir!


----------



## jaus (30. April 2006)

Noch ein kleiner Hinweis... Alle strings, bei denen das gemacht werden soll, sind unterschiedlich lang, also keine feste länge nehmen, sondern .length()


----------



## RS9999 (30. April 2006)

Hier eine Möglichkeit:


```
int main()
{
   string s= "Das is ein Test;;";
   
   s.replace( s.find( ";"),100, "");
   cout<<s<<endl;   
}
```


----------



## jaus (30. April 2006)

Es sind leider nicht nur am Ende ; sondern auch noch davor und es sollen nur die ganz hinten gelöscht werden!


----------



## jaus (30. April 2006)

Soetwas ähnliches, wie:

TestString.replace(TestString.find_last_of(";",1),100,"");

Nur das da oben funktioniert eben nicht.. Weiß einer wieso?

Außerdem muss da irgendwie noch eine while-Schleife rein, dass das so oft wiedehrolt wird, bis kein ; mehr ganz hinten... ABER WIE?!


----------



## Matthias Reitinger (30. April 2006)

Vielleicht so?

```
long pos = s.length();
while (s.at(pos - 1) == ';') pos--;	
s.erase(pos, s.length());
```


----------



## jaus (1. Mai 2006)

Danke, genau das habe ich gesucht 

Gibt es auch noch eine möglichkeit einen String nach ;; zu durchsuchen und wenn diese Zeichenkette vorhanden es, sie durch ; zu ersetzen?

Also kurz gesagt ein ;; durch ein ; ersetzen. Nur die Position ist hier immer unterschiedlich...

Danke schon mal


----------



## Matthias Reitinger (1. Mai 2006)

Eine Zeichenkette innerhalb einer Zeichenkette kann man mit der Methode find finden. Zum Entfernen von Zeichen kann man erase aufrufen.


----------

