string.Replace (u otra modificación de cadena) no funciona

Resuelto PositiveGuy asked hace 14 años • 4 respuestas

Para el siguiente código, no puedo hacer que string.Replacefuncione:

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

cuando depuro y verifico los parámetros, tienen los valores que espero, es decir, someID.ToString()obtuvieron "1087163075", sessionIDtienen "108716308" y someTestStringcontienen "1087163075".

No tengo idea de por qué esto no funcionaría.someTestString

Muestra completa:

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

el resultado (en someTestString) debería ser este:

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

pero no cambia. La cadena for someTestStringpermanece sin cambios después de ingresar a mi código.

PositiveGuy avatar Dec 23 '09 03:12 PositiveGuy
Aceptado

Las cadenas son inmutables. El resultado string.Replacees una nueva cadena con el valor reemplazado.

Puede almacenar el resultado en una nueva variable:

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

o simplemente reasigne a la variable original si solo desea observar el comportamiento de "cadena actualizada":

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

Tenga en cuenta que esto se aplica a todas las demás stringfunciones como Remove,, Insertrecortar y variantes de subcadena; todas devuelven una nueva cadena ya que la cadena original no se puede modificar.

womp avatar Dec 22 '2009 20:12 womp
someTestString = someTestString.Replace(someID.ToString(), sessionID);

eso debería funcionar para ti

Josh Mein avatar Dec 22 '2009 20:12 Josh Mein

las cadenas son inmutables, el reemplazo devolverá una nueva cadena, por lo que necesita algo como

string newstring = someTestString.Replace(someID.ToString(), sessionID);
Pharabus avatar Dec 22 '2009 20:12 Pharabus