2012-11-26 3 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

백 슬래시 문자는 이스케이프 문자이므로 두 개를 입력하거나 이스케이프를 무시하는 @ 문자열 한정자를 사용해야합니다.

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

당신이 원하는 것을해야한다. 어쩌면 디버거에서 이중 문자가 있음을 알려주고 있지만 실제로는 하나뿐입니다.

편집 : 죄송 합니다만 실제로는 첫 번째 인수로 "'"이되어야합니다.

관련 문제