2009-12-22 14 views
9

Para el siguiente código, que no pueden obtener la String.Replace al trabajo:String.Replace (u otra modificación cadena) que no trabaja

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

cuando puedo depurar y comprobar someID.ToString que tiene "108716307 " y Id.sesión tiene "108716308"

ni idea de por qué esto no funcionaría si someTestString es la siguiente:

"The:<br>Photo: <b><a href='myfoldert/108716305-1.jpg' target='_blank'>108716305-1.jpg</a> (originalphoto.gif)</b><br>Background Color: <b>223324</b>" 

el resultado debe ser el siguiente:

"The:<br>Photo: <b><a href='myfoldert/108716305-1.jpg' target='_blank'>1087163085-1.jpg</a> (originalphoto.gif)</b><br>Background Color: <b>223324</b>" 

pero no cambiar. La cadena para someTestString permanece sin cambios después de presionar mi código.

+9

error de codificación .net clásico. Creo que todo el mundo ya se topó con una o dos veces a toda prisa :-))) – Alex

+1

tan común que CoffeeAddict cometió el mismo error después de un mes :) http://stackoverflow.com/questions/1558024/string-replace-not- trabajando –

+1

Tenga en cuenta que existe el mismo problema para cada operación en el tipo 'System.String' que esperaría cambiar la cadena - no cambian la cadena - devuelven una nueva cadena con el cambio. –

Respuesta

41

cadenas son inmutables. El resultado de string.Replace es una cadena nueva con el valor reemplazado. Prueba esto:

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

basura que me atrapa CADA vez, no importa cuántas veces use la cuerda. Reemplazar. ahhhh! – PositiveGuy

+6

Confía en mí ... usted no es el único;) – womp

+0

así parece que no se puede simplemente hacer esto y lo puso a sí mismo, ya sea: someTestString = someTestString.Replace (someID.ToString(), Id.sesión); – PositiveGuy

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

que debe trabajar para usted

1

cadenas son inmutables, al sustituir devolverá una nueva cadena por lo que necesita algo así como

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

Puede lograr el deseado efecto usando

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

Como dijo womp, las cadenas son inmutables, lo que significa que sus valores no se pueden cambiar sin cambiar todo el objeto.