2012-11-26 10 views
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> 

私は後に交換することを取得したいと思います:

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

任意のアイデア?

ありがとうございます!

+0

あなたはたくさんの良い答えを得ていますが...正しいHTMLエンコーディングを実現するためのより良い方法があるので、ASP.Net WebForms/MVCでHTMLを書き留めてはいけません。 。 "l'annee"には一重引用符の代わりに "' "が含まれている可能性があることに注意してください。 –

答えて

8

私は強くあなたが倍増バックスラッシュを見ている理由である、デバッガ内の文字列を見ていると思われます。それを記録したり、それを果たす、

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

(リテラル逐語的文字列を使用して1が細かすぎるだろう。)よりもむしろ、デバッガでそれを見て、すべてがすべき:

このバージョンでは、絶対に大丈夫です大丈夫です。

二重引用符でも表示されているという事実がこれの証拠です。たとえば、この文字列:

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("\'", @"\'"); 

は、あなたが欲しいものを行う必要があります。おそらくデバッガは二重の\文字があると言っていますが、現実には一つしかありません。

EDIT:申し訳ありませんが、実際は"'"が最初の引数になります。

関連する問題