String.Replace(или другая модификация строки) не работает

Для следующего кода я не могу получить string.Replace на работу:

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

когда я отлаживаю и проверяю параметры, они имеют someID.ToString() значения - то есть someID.ToString() получает "1087163075", а sessionID имеет "108716308", а someTestString содержит "1087163075".

Я понятия не имею, почему это не будет работать изменить someTestString

Полный образец:

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

результат (в someTestString) должен быть таким:

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

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

Ответ 1

Строки неизменны. Результатом string.Replace является новая строка с замененным значением.

Вы можете сохранить результат в новой переменной:

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

или просто переназначить исходную переменную, если вы просто хотите наблюдать поведение "строка обновлена":

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

Обратите внимание, что это относится ко всем другим string функциям, таким как варианты Remove, Insert, trim и substring - все они возвращают новую строку, поскольку исходная строка не может быть изменена.

Ответ 2

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

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

Ответ 3

Строки

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

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

Ответ 4

Вы можете добиться желаемого эффекта, используя

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

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