15 Stimmen

string.Replace (oder andere String-Modifikation) funktioniert nicht

Für den folgenden Code kann ich nicht die string.Replace zur Arbeit:

someTestString.Replace(someID.ToString(), sessionID);

Bei der Fehlersuche und Überprüfung der Parameter werden die erwarteten Werte angezeigt, d. h. someID.ToString() erhält "1087163075", und sessionID hat "108716308" und someTestString enthält "1087163075".

Ich habe keine Ahnung, warum diese Änderung nicht funktionieren sollte. someTestString

Vollständige Probe:

string someTestString = 
      "<a href='myfoldert/108716305-1.jpg' target='_blank'>108716305-1.jpg</a>"
someTestString.Replace("108716305", "NewId42");  

das Ergebnis (in someTestString ) sollte dies sein:

"<a href='myfoldert/NewId42-1.jpg' target='_blank'>NewId42-1.jpg</a>" 

aber das ändert sich nicht. Die Zeichenfolge für someTestString bleibt nach dem Aufschlagen meines Codes unverändert.

48voto

womp Punkte 113535

Zeichenketten sind unveränderlich. Das Ergebnis von string.Replace ist eine neue Zeichenkette mit dem ersetzten Wert.

Sie können das Ergebnis entweder in einer neuen Variablen speichern:

var newString = someTestString.Replace(someID.ToString(), sessionID);

oder weisen Sie einfach die ursprüngliche Variable erneut zu, wenn Sie nur das Verhalten "String aktualisiert" beobachten wollen:

someTestString = someTestString.Replace(someID.ToString(), sessionID);

Beachten Sie, dass dies auch für alle anderen string Funktionen wie Remove , Insert , trim und substring Varianten - sie alle geben eine neue Zeichenkette zurück, da die ursprüngliche Zeichenkette nicht verändert werden kann.

2voto

Josh Mein Punkte 27197
someTestString = someTestString.Replace(someID.ToString(), sessionID);

das sollte für Sie funktionieren

1voto

Pharabus Punkte 6031

Strings unveränderlich sind, wird das Ersetzen einen neuen String zurückgeben, so dass Sie etwas wie

string newstring = someTestString.Replace(someID.ToString(), sessionID);

1voto

Peter Alexander Punkte 51742

Sie können den gewünschten Effekt erzielen, indem Sie

someTestString = someTestString.Replace(someID.ToString(), sessionID);

Wie womp schon sagte, sind Strings unveränderlich, was bedeutet, dass ihre Werte nicht geändert werden können, ohne das gesamte Objekt zu ändern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X