У меня есть строка, которая содержит последовательность из трех "\", и я должен заменить их одним "\".
строка:
string sample = "<ArrayOfMyObject xmlns:i=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"";
Я попробовал, как было предложено в других потоках, со следующим кодом, но он не работал:
string result = sample.Replace(@"\\\",@"\");
string result = sample.Replace("\\\\\\","\\");
заранее спасибо
Чтобы заменить \\\
на \
в строке c#
попробуйте этот код (протестированный и работающий)
string strRegex = @"(\\){3}";
string strTargetString = @"sett\\\abc";
var test=Regex.Replace(strTargetString, strRegex, @"\"); //test becomes sett\abc
в debug вы увидите test=sett\\abc
(2 обратных слэша, но один - побег). Не беспокойтесь и перейдите в текст Visualizer, и вы увидите правильное значение
тогда
в вашем конкретном случае код будет
string sample = @"<ArrayOfMyObject xmlns:i=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"";
var result=Regex.Replace(sample , strRegex, @"\");
В вашей выборке ваша строка фактически не содержит трех символов "\" в ней. Некоторые из них являются escape-символами.
\будет фактически соответствовать одному символу \. \"фактически будет соответствовать одному" символу.
Значение вашей строки в памяти:
<ArrayOfMyObject xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"
Итак, ваши операции замены ничего не делают, потому что они ничего не соответствуют.
вывод обоих замещений
<ArrayOfMyObject xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"
это выглядит правильно
но, возможно, вам нужно добавить 6 вместо 3 '\' на ваш вход, потому что персонажи - символы эвакуации.
\"
хотя