String beschneiden
-
Hallo,
Ich habe einen string
wie z.b.
string test="[---test]Wie entferne ich nun die eckigen Klammern und die Striche?
-
find() und Konsorten können die richtige Stelle im String raussuchen, erase() löscht Zeichen (alternativ kannst du dir per substr() den Teil rausnehmen, der übrig bleiben soll).
-
Hi,
hier ist nicht ganz klar, was Du willst:
- Erstes und letztes Zeichen entfernen (test.erase(0, 1); test.erase(test.length()-1);((achtung: length() muss > 0 sein)) oder
- alle/erstes '[' und ']' entfernen. ?Außerdem verstehe ich unter "Entfernen" nicht das Ersetzen durch Leerzeichen.
Gruß,
Simon2.
-
das 0te bis 3te Zeichen ([---) und das letzte(]) soll weg.
Mit weg meine ich wirklich weg und nicht durch leerzeichen ersetzt.In meinem Programm stehen an der besagten Stelle zahlen, mit denen ich rechnen möchte.
-
A: Du schneidest die beiden Teile einfach ab:
test.erase(0,3);// [-- test.erase(test.length()-1); // ]B: Du holst dir den Mittelteil aus dem String heraus:
test=test.substr(3,test.length()-4);
-
Hi,
für das Entfernen aller Zeichen nutze ich gerne remove_if():
#include <string> using std::string; #include <algorithm> using std::remove_if; bool unerwuenschteZeichen(char const& c) { return c == ']' || c == '['; } int main() { string test = "[12345]7"; test.erase(remove_if(test.begin(), test.end(), unerwuenschteZeichen), test.end()); return 0; }Ein bischen blöd ist, dass remove_if() nicht direkt den string kürzt, aber das ist mit einem erase(..., end()) auch schnell gemacht.
Dafür kann man netterweise die unerwuenschtenZeichen() sehr spät konfigurieren/erweitern.... und spart sich lästige find()-Schleifenorgien.Gruß,
Simon2.