我有一个包含三个序列的字符串" \"我必须用单个" \"替换它们。
字符串是:
string sample = "<ArrayOfMyObject xmlns:i=\\\"http://www.w3.org/2001/XMLSchema-instance\\\"";
我已尝试过,如其他主题所示,使用以下代码,但它不起作用:
string result = sample.Replace(@"\\\",@"\");
string result = sample.Replace("\\\\\\","\\");
提前致谢
答案 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,你会看到正确的值
然后
在您的具体情况下,代码将是
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是转义字符。