2009-12-22 3 views
9

Для следующего кода, я не могу получить string.replace работать:string.replace (или другая строка модификации) не работает

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

, когда я отладки и проверки someID.ToString он получил «108716307 " и SESSIONID имеет "108716308"

не знаю, почему это не будет работать, если someTestString является следующее:

"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>" 

результат должен быть следующим:

"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>" 

но оно не меняется. Строка для someTestString остается неизменной после удара моего кода.

+9

Classic .net кодировка ошибка. Я думаю, что все уже натолкнулись на него один или два раза в спешке :-))) – Alex

+1

Так часто, что CoffeeAddict совершил ту же ошибку через месяц :) http://stackoverflow.com/questions/1558024/string-replace-not- working –

+1

Обратите внимание, что такая же проблема существует для каждой операции над типом 'System.String', которую вы ожидаете изменить в строке - они не меняют строку - они возвращают новую строку с изменением. –

ответ

41

Строки неизменяемы. Результат string.Replace - это новая строка с замененным значением. Попробуйте это:

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

дерьмо, которое получает меня КАЖДЫЙ раз, независимо от того, сколько раз я использую string.Replace. Ааааа! – PositiveGuy

+6

Поверьте мне ... вы не единственный;) – womp

+0

, похоже, вы не можете просто сделать это и установить его сами: someTestString = someTestString.Replace (someID.ToString(), sessionID); – PositiveGuy

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

, который должен работать для вас

1

строки являются неизменными, то замените возвращает новую строку, так что вам нужно что-то вроде

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

Вы можете достичь желаемого с использованием

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

Как сказал womp, строки неизменяемы, что означает, что их значения не могут быть изменены без изменения всего объекта.

Смежные вопросы