Hi …
je nachdem wie Du die Rahmenbedingungen definierst. Konstruktionen mit instr, Left und Right gehen (ohne Schleife außen rum) davon aus, dass der Text nur genau ein Mal vorkommen kann.
Die einfachste Möglichkeit, die immer klappt, wäre, die Replace Funktion zu bemühen:
http://msdn.microsoft.com/de-de/library/bt3szac5%28v…
je nachdem wie Du sie parametrisiertst, ersetzt sie den Text ein mal, x Mal oder so oft er vorkommt (count auf -1, siehe Beschreibung). Ist der Text gar nicht enthalten, tut die Funktion einfach nichts, es wird also kein Fehler ausgeworfen.
Um einen Text verschwinden zu lassen, würdest Du den 3. Parameter (Replacement-String) auf Leer ("") setzen, dann wird der Teiltext durch Leertext ersetzt, mithin entfernt.
Beispiele:
Replace („1 2 3 4 5 6 7 8 9 10 11“,„11“,"",-1) ergibt „1 2 3 4 5 6 7 8 9 10 "
Replace („1 2 3 4 5 6 7 8 9 10 11“,„1“,“",-1) ergibt " 2 3 4 5 6 7 8 9 0 "
Replace („1 2 3 4 5 6 7 8 9 10 11“," „,“",-1) ergibt „1234567891011“
Replace („1 2 3 4 5 6 7 8 9 10 11“,„1“,"",1) ergibt " 2 3 4 5 6 7 8 9 10 11"
Das war der prozedurale Ansatz. Du kannst natürlich auch dem Zeitgeist folgen und den String als Objekt betrachten, dann findest Du hier:
http://msdn.microsoft.com/de-de/library/fk49wtc1%28v…
die Beschreibung der Methode „String.Replace“. Die ersten Parameter sind gleich, aber dann bemerkst Du, dass die Methode weit weniger flexibel ist als die Prozedur, da sie nur eins kann: immer alle Vorkommnisse ersetzen.
Da Du bei Visual Basic aber immer die Wahl hast, ob Du prozedural oder objektorientiert oder gemischt arbeiten möchtest, ist das von Deinem persönlichen Geschmack und den konkreten Anforderungen anhängig.
Gruss Armin