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, строки неизменяемы, что означает, что их значения не могут быть изменены без изменения всего объекта.