Строка Заменить «\\\» на «\»

1

У меня есть строка, которая содержит последовательность из трех "\", и я должен заменить их одним "\".

строка:

string sample = "<ArrayOfMyObject xmlns:i=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"";

Я попробовал, как было предложено в других потоках, со следующим кодом, но он не работал:

string result = sample.Replace(@"\\\",@"\");
string result = sample.Replace("\\\\\\","\\");

заранее спасибо

  • 2
    Ваша строка примера не содержит трех последовательных символов \\\, потому что она не экранирована. Он содержит \" хотя
Теги:
replace

3 ответа

2
Лучший ответ

Чтобы заменить \\\ на \ в строке c# попробуйте этот код (протестированный и работающий)

 string strRegex = @"(\\){3}";
 string strTargetString = @"sett\\\abc";
 var test=Regex.Replace(strTargetString, strRegex, @"\"); //test becomes sett\abc

в debug вы увидите test=sett\\abc (2 обратных слэша, но один - побег). Не беспокойтесь и перейдите в текст Visualizer, и вы увидите правильное значение

Изображение 174551

тогда

Изображение 174551

в вашем конкретном случае код будет

 string sample = @"<ArrayOfMyObject xmlns:i=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"";
var result=Regex.Replace(sample , strRegex, @"\");
  • 0
    Большое спасибо, что вы - элегантное решение. Что меня смущает, так это то, что отладка показывает код уже с escape.
  • 0
    рад помочь вам :)
3

В вашей выборке ваша строка фактически не содержит трех символов "\" в ней. Некоторые из них являются escape-символами.

\будет фактически соответствовать одному символу \. \"фактически будет соответствовать одному" символу.

Значение вашей строки в памяти:

<ArrayOfMyObject xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"

Итак, ваши операции замены ничего не делают, потому что они ничего не соответствуют.

  • 0
    Вы правы, строка в памяти верна, но при отладке я увидел ее с тремя "\". Спасибо!!!!
0

вывод обоих замещений

<ArrayOfMyObject xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"

это выглядит правильно

но, возможно, вам нужно добавить 6 вместо 3 '\' на ваш вход, потому что персонажи - символы эвакуации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню