c # replace \ "символы - PullRequest
       22

c # replace \ "символы

25 голосов
/ 12 января 2011

Мне отправлена ​​строка XML, которую я пытаюсь проанализировать через XmlReader, и пытаюсь удалить символы \".

Я пробовал

.Replace(@"\", "")
.Replace("\\''", "''")
.Replace("\\''", "\"")

плюс несколько других способов.

Есть идеи?

Ответы [ 6 ]

53 голосов
/ 12 января 2011

Вы пробовали это так:

string text = GetTextFromSomewhere();
text.Replace("\\", "");
text.Replace("\"", "");

?Если это так, то проблема в том, что Replace не изменяет оригинальную строку , а возвращает новую строку с выполненной заменой ... так что вы захотите:

string text = GetTextFromSomewhere();
text = text.Replace("\\", "").Replace("\"", "");

Обратите внимание, что это заменит каждую обратную косую черту и каждый символ двойной кавычки;если бы вы только хотели заменить пару «обратной косой чертой с двойной кавычкой», вы бы просто использовали:

string text = GetTextFromSomewhere();
text = text.Replace("\\\"", "");

(как упоминалось в комментариях, это потому, что строки неизменяемыв .NET - если у вас есть какой-либо строковый объект, эта строка всегда будет иметь одинаковое содержимое. Конечно, вы можете присвоить ссылку на другую строку переменной, но это на самом деле не меняетсодержимое существующей строки.)

8 голосов
/ 20 октября 2014

В .NET Framework 4 и MVC это единственное работающее представление:

Replace(@"""","")

Использование обратной косой черты в любой комбинации не сработало ...

5 голосов
/ 12 января 2011

Попробуй так:

Replace("\\\"","");

Это заменит вхождения \" пустой строкой.

Ex:

string t = "\\\"the dog is my friend\\\"";
t = t.Replace("\\\"","");

Это приведет к:

the dog is my friend
1 голос
/ 12 января 2011
\ => \\ and " => \"

так Replace("\\\"","")

0 голосов
/ 12 января 2011

Где эти символы встречаются? Видите ли вы их, если изучите данные XML, скажем, в блокноте? Или вы видите их при проверке данных XML в отладчике. Если это последнее, они являются только escape-символами для символов " и, следовательно, являются частью фактических данных XML.

0 голосов
/ 12 января 2011

Заменить (@ "\" "", "")

Вы должны использовать двойные двойные кавычки, чтобы escape двойные кавычки в пределах дословной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...