2012-11-26 48 views
5

在這個變量中,我想在每個'之前加\'。用C代替'with'#

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> 

我想拿到更換後:

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

任何想法?

謝謝!

+0

你有很多好的(+1全部)答案,但是......請確保你這樣做是爲了純粹的樂趣,而不是在ASP.Net WebForms/MVC中寫出HTML,因爲有更好的方法來實現正確的HTML編碼。請注意,「l'annee」可能包含「'」而不是單引號...... –

回答

8

我強烈懷疑,你看在調試琴絃,這就是爲什麼你看到一倍反斜槓。

這個版本絕對是罰款:

html = html.Replace("\'", "\\'"); 

,而不是在調試器看着它(使用逐字字符串將被罰款過的一個。),記錄或只是服務於它,一切都應該沒事的。

事實上,你看到它的雙引號以及這是進一步的證據。例如,這個字符串:

string html = "<a href=\"anne..."; 

...不包含反斜槓,但你的診斷都出現了,這就是我在調試器的期望。

+0

的確,我在調試器中查找字符串。 它的工作很好。 – Ceryl

7

反斜槓字符是一個轉義字符,因此您需要將其中的2個或使用忽略轉義的@字符串修飾符。

html=html.Replace("'", "\\'"); // this should work 
html=html.Replace("'", @"\'"); // or this 
+0

這很有效,我在調試器中查找字符串,這就是爲什麼我在替換後看到\\'。 – Ceryl

+0

我很高興你有你需要的東西; Skeet是男人。這是一個寫得很好的第一個問題。 –

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

html = html.Replace("'",@"\'"); 
1

試試這個:

html=html.Replace("'", @"\'"); 
0

其中一行:

html=html.Replace("\'", "\\'"); 
html=html.Replace("\'", @"\'"); 

應該做你想要什麼。也許調試器告訴你有雙\字符,但實際上只有一個。

編輯:對不起,其實它應該是"'"作爲第一個參數。