string.replace не работает - PullRequest
       6

string.replace не работает

1 голос
/ 03 октября 2011

У меня есть функция, которая принимает строку (которая в основном является документом XML). Я делаю это изменение:

  if (filterXml.Contains("&"))
    {
        filterXml.Replace("&", "&");
    }

Достигается это условие, но не заменяет

 & to &

Что здесь не так?

Ответы [ 5 ]

13 голосов
/ 03 октября 2011

Помните, строки неизменны.Поэтому вам необходимо присвоить возвращаемое значение метода Replace (обратите внимание, что он возвращает объект String) обратно в вашу переменную.

  if (filterXml.Contains("&"))
  {
      filterXml = filterXml.Replace("&", "&");
  }

Если вы много работаете с объектами String, убедитесь, чточтобы прочитать справочную страницу String

7 голосов
/ 03 октября 2011

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

filterXml = filterXml.Replace("&", "&");

но я бы рекомендовал кодировать ВСЕ специальные символы XML.

6 голосов
/ 03 октября 2011

Вам даже не нужно проверять содержимое. Просто сделайте следующее:

filterXml = filterXml.Replace("&", "&");

Если в строке нет амперсандов, то ничего не изменится.

4 голосов
/ 03 октября 2011

Попробуйте -

  if (filterXml.Contains("&"))
    {
        filterXml = filterXml.Replace("&", "&");
    }

Строки неизменны в .net, поэтому функция replace возвращает новую строку, а не изменяет строку, для которой она вызывается. Вы можете назначить измененный результат переменной, содержащей исходное строковое значение.

1 голос
/ 03 октября 2011
  if (filterXml.Contains("&"))
    {
        filterXml = filterXml.Replace("&", "&");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...