2009-07-24 41 views
60

Tôi đang cố gắng khớp trên một số HTML được định dạng không nhất quán và cần phải loại bỏ một số dấu ngoặc kép.Trích dẫn gấp đôi dải từ một chuỗi trong .NET

hiện tại:

<input type="hidden"> 

Mục tiêu:

<input type=hidden> 

này là sai vì tôi không thoát nó đúng cách:

s = s.Replace (""" , "");

Điều này sai vì không có ký tự trống (theo kiến ​​thức của tôi):

s = s.Replace('"', ''); 

Kết hợp ký tự/cú pháp để thay thế dấu nháy kép bằng một chuỗi rỗng là gì?

+2

Bạn đã được gắn thẻ này C# và VB.NET. Câu trả lời phụ thuộc vào cái nào. Mặc dù hầu hết mọi người đều cho rằng đó là C# (như thường lệ ở đây) và câu trả lời bạn đã chấp nhận là C#. – MarkJ

+0

Bạn đã thuyết phục tôi thay đổi câu trả lời được chấp nhận của tôi. –

Trả lời

154

Tôi nghĩ rằng dòng đầu tiên của bạn thực sự sẽ làm việc nhưng tôi nghĩ rằng bạn cần bốn dấu ngoặc kép cho một chuỗi chứa một đơn (trong VB ít nhất):

s = s.Replace("""", "") 

cho C# bạn muốn có để thoát khỏi dấu ngoặc kép sử dụng một dấu chéo ngược:

s = s.Replace("\"", ""); 
+18

+1 để đọc thẻ và trả lời cho ** cả ** C# và VB.NET , không giống như hầu hết mọi người :) – MarkJ

+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

22
s = s.Replace("\"", ""); 

Bạn cần sử dụng \ để thoát ký tự trích dẫn kép trong chuỗi.

+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

3

Bạn phải thoát khỏi dấu ngoặc kép với dấu gạch chéo ngược.

s = s.Replace("\"",""); 
+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

5
s = s.Replace("\"",string.Empty); 
+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

12

Bạn có thể sử dụng một trong những:

s = s.Replace(@"""",""); 
s = s.Replace("\"",""); 

... nhưng tôi tò mò muốn biết tại sao bạn muốn làm điều đó? Tôi nghĩ rằng đó là thực hành tốt để giữ giá trị thuộc tính được trích dẫn?

+0

Thứ hai câu hỏi này ... Tôi muốn biết tốt. – JAB

+1

Tôi đang sử dụng Gói nhanh nhẹn HTML để tìm một liên kết nhất định và sau đó tôi cần xóa một giá trị trong liên kết đó khỏi văn bản HTML. Gói Agility HTML trích dẫn các giá trị thuộc tính, nhưng HTML gốc không được trích dẫn. (Và tất cả điều này cho một thử nghiệm.) –

+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

3

C#: "\"", do đó s.Replace("\"", "")

vb/vbs/vb.net: "" do đó s.Replace("""", "")

+0

+1 để đọc các thẻ và trả lời cho ** cả ** C# và VB.NET, không giống như hầu hết mọi người :) – MarkJ

+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

0
s = s.Replace("""", "") 

Hai dấu ngoặc kép bên cạnh mỗi chức năng sẽ khác là "nhân vật dự định khi bên trong một chuỗi.

+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

1

s = s.Thay thế(@"""", "");

+0

điều này có tác dụng phụ nếu có nhiều dấu ngoặc kép nhúng trong chuỗi – Aadith

1

này làm việc cho tôi

//Sentence has quotes 
string nameSentence = "Take my name \"Wesley\" out of quotes"; 
//Get the index before the quotes`enter code here` 
int begin = nameSentence.LastIndexOf("name") + "name".Length; 
//Get the index after the quotes 
int end = nameSentence.LastIndexOf("out"); 
//Get the part of the string with its quotes 
string name = nameSentence.Substring(begin, end - begin); 
//Remove its quotes 
string newName = name.Replace("\"", ""); 
//Replace new name (without quotes) within original sentence 
string updatedNameSentence = nameSentence.Replace(name, newName); 

//Returns "Take my name Wesley out of quotes" 
return updatedNameSentence; 
8

Tôi không thấy suy nghĩ của tôi lặp đi lặp lại đã, vì vậy tôi sẽ đề nghị bạn nên nhìn vào string.Trim trong tài liệu Microsoft cho C# bạn có thể thêm một nhân vật được tỉa thay vì chỉ đơn giản là cắt tỉa khoảng trống:

string withQuotes = "\"hellow\""; 
string withOutQotes = withQuotes.Trim('"'); 

nên kết quả trong withOutQuotes là "hello" thay vì ""hello""

0

Nếu bạn chỉ muốn tách dấu ngoặc kép khỏi các đầu của chuỗi (không phải giữa) và có khả năng có thể có dấu cách ở cuối đầu của chuỗi (tức là phân tích một tập tin định dạng CSV, nơi có một không gian sau dấu phẩy), sau đó bạn cần phải gọi hàm Trim hai lần ... ví dụ:

string myStr = " \"sometext\"";  //(notice the leading space) 
myStr = myStr.Trim('"');   //(would leave the first quote: "sometext) 
myStr = myStr.Trim().Trim('"');  //(would get what you want: sometext) 
Các vấn đề liên quan