Ich habe in einem String einige Wörter zu ersetzen. Mitunter Wörter die teilweise öfter vorkommen, aber konkateniert mit anderen Wörtern. Beispiel:
Lastname Pers1Lastname Pers2Lastname
Nun, wenn ich "".Replace("Lastname", "Nachname") einsetze, so werden alle "Lastname" gefunden und ersetzt.
Meine Frage: Wie kann ich hier sicher vorgehen und ausschließlich das einzelne Wort "Lastname" ersetzen, ohne das die anderen, wo lediglich das entsprechende Wort vorkommt, mit ersetzt werden?
Ein wenig unglücklich ist, das in dem Beispiel Lastname ausgerechnet zu Beginn steht. Wäre es sonst nicht am einfachsten, CRLF & "Lastname" durch CRLF & "Nachname" zu ersetzen? Würde dann halt nur beim ersten Vorkommen nicht funktionieren, was die Idee gerade ein wenig diszqualifiziert :) Aber wie heisst es noch? Keep it simple.
PS: Wobei ich gerade bemerke WER hier die Frage stellt und ich denke mal das Du darauf selbst gekommen wärst. Also muss da ein Haken dran sein :)
Das ist es ja, ich weiß halt nicht, an welcher Stelle das einzelne Lastname steht. Zeilenumbrüche habe ich in den String wo die entsprechenden Wörter vorkommen keine.
Falls in dem String Leerzeichen sind, könntest Du dann doch aber "Lastname " ersetzen. Ohne Trennzeichen aneinandergereiht werden die Wörter ja eher nicht sein, oder?
Eine ähnliche Frage, allerdings nur zum Finden eines Strings, findest Du hier: http://stackoverflow.com/questions/4131443/c-sharp-find-exact-match-in-string Dummerweise ohne das Replace.
hmm, das stimmt. Mein Suchstring sollte so immer vorn und hinten dran ein Leerzeichen haben, so passt das. Naja manchmal sieht man den Wald vor lauter Bäume nicht. Vielen Dank!
Spielverderber..... da hat sich die Antwort überschnitten. Ein(!) Leerzeichen hinter dem Wort müsste ja eigentlich immer da sein. Bis auf das letzte Wort. Da könnte es ja Abhilfe schaffen, ein Leerzeichen an den String anzuhängen, bevor Du das Replace drüber jagst.
Ich habe das jetzt zwar nur mir dem Regexlab getestet, aber dort wird das jedenfalls richtig ersetzt
EDIT: Da ist dann auch wurst ob das Lastname ganz vorne, in der Mitte oder Hinten steht. Da mit der Regex Expression immer Vorne oder Hinten ein Leerzeichen oder das Ende / Anfang sein muss