字符串替换" \\\"用" \"

时间:2014-07-22 08:14:01

标签: c# replace

我有一个包含三个序列的字符串" \"我必须用单个" \"替换它们。

字符串是:

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

我已尝试过,如其他主题所示,使用以下代码,但它不起作用:

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

提前致谢

3 个答案:

答案 0 :(得分:3)

在您的示例中,您的字符串实际上没有三个&#34; \&#34;其中的一些字符 - 其中一些是转义字符。

\实际上对应于单个\字符。 \&#34;实际上会对应一个单一的&#34;字符。

你的字符串的在内存中是: -

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

因此,您的替换操作不会执行任何操作,因为它们与任何内容都不匹配。

答案 1 :(得分:2)

要用\\\字符串中的\替换c#,请尝试使用此代码(已测试并正常工作)

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

在调试中,您将看到test=sett\\abc(2个反斜杠,但其中一个是转义)。 不要担心并转到文本Visualizer,你会看到正确的值

enter image description here

然后

enter image description here

在您的具体情况下,代码将是

 string sample = @"<ArrayOfMyObject xmlns:i=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"";
var result=Regex.Replace(sample , strRegex, @"\");

答案 2 :(得分:0)

两个替换的输出是

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

这看起来正确

但也许您必须添加6而不是3&#39; \&#39;在你的输入中,因为caracters是转义字符。