2012-11-26 30 views
5

Trong biến này, tôi muốn thêm một số \ trước mỗi '.Thay thế 'bằng ' trong 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> 

Tôi muốn nhận được rằng sau khi thay thế:

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

Bất kỳ ý tưởng?

Cảm ơn!

+0

Bạn nhận được nhiều câu trả lời hay (+1 tất cả), nhưng ... Hãy đảm bảo bạn làm điều đó cho vui, không viết HTML trong ASP.Net WebForms/MVC vì có cách tốt hơn để đạt được mã HTML thích hợp . Lưu ý rằng "l'annee" có thể chứa "' "thay vì dấu nháy đơn ... –

Trả lời

8

tôi rất nghi ngờ rằng bạn đang nhìn vào chuỗi trong trình gỡ lỗi, đó là lý do tại sao bạn đang nhìn thấy những dấu xồ nguợc tăng gấp đôi.

Phiên bản này là hoàn toàn tốt:

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

(Người sử dụng chuỗi đúng nguyên văn theo nghĩa đen sẽ là tốt quá.) Thay vì nhìn vào nó trong trình gỡ lỗi, đăng nhập nó hay chỉ phục vụ nó, và tất cả mọi thứ nên tốt.

Thực tế là bạn đang xem nó cho báo giá kép cũng là bằng chứng thêm về điều này. Ví dụ, chuỗi này:

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

... không không chứa một dấu chéo ngược, nhưng chẩn đoán của bạn được hiển thị nó, đó là những gì tôi mong đợi ở một trình gỡ lỗi.

+0

Thật vậy, tôi đã tìm chuỗi trong trình gỡ lỗi. Làm việc tốt. – Ceryl

7

Ký tự dấu gạch chéo ngược là ký tự thoát, vì vậy bạn cần phải đặt 2 ký tự hoặc sử dụng công cụ sửa đổi chuỗi @ bỏ qua thoát.

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

Điều đó hoạt động, tôi đã tìm chuỗi trong trình gỡ lỗi, đó là lý do tại sao tôi thấy \\ 'sau khi thay thế. – Ceryl

+0

Tôi rất vui khi bạn có được những gì bạn cần; Skeet là người đàn ông. Đó là một câu hỏi đầu tiên được viết tốt. –

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

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

Hãy thử điều này:

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

Một trong những dòng này:

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

nên làm những gì bạn muốn. Có lẽ trình gỡ rối đang nói với bạn rằng có hai ký tự, nhưng thực tế chỉ có một ký tự.

EDIT: xin lỗi, thực ra nó phải là đối số đầu tiên là "'".