在C#中替换'with \'

Cer*_*ryl 5 c#

在这个变量中,我想在每个'之前添加一些\.

string html = 
    "<a href=\"annee-prochaine.html\">Calendrier de l'annee prochaine</a>"

html = html.Replace("'", "\'"); //No change
html = html.Replace("\'", "\'"); //No change

html = html.Replace("\'", "\\'");
//html => <a href=\"annee-prochaine.html\">Calendrier de l\\'annee prochaine</a>
html = html.Replace("\'", @"\'");
//html => <a href=\"annee-prochaine.html\">Calendrier de l\\'annee prochaine</a>
Run Code Online (Sandbox Code Playgroud)

我希望在替换之后得到它:

//html => <a href=\"annee-prochaine.html\">Calendrier de l\'annee prochaine</a>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

谢谢!

Jon*_*eet 8

我强烈怀疑你正在查看调试器中的字符串,这就是为什么你看到双倍的反斜杠.

这个版本绝对没问题:

html = html.Replace("\'", "\\'");
Run Code Online (Sandbox Code Playgroud)

(使用逐字字符串文字的那个也可以.)而不是在调试器中查看它,记录它或只是服务它,一切都应该没问题.

您正在看双引号这一事实进一步证明了这一点.例如,这个字符串:

string html = "<a href=\"anne...";
Run Code Online (Sandbox Code Playgroud)

......不包含反斜杠,但你的诊断都出现了,这就是我在调试器的期望.


Nic*_*sen 7

反斜杠字符是一个转义字符,因此您需要放置其中的两个,或使用忽略转义的@字符串修饰符.

html=html.Replace("'", "\\'"); // this should work
html=html.Replace("'", @"\'"); // or this
Run Code Online (Sandbox Code Playgroud)