Bỏ dấu ngoặc kép khỏi một chuỗi trong .NET


98

Tôi đang cố gắng đối sánh trên một số HTML được định dạng không nhất quán và cần loại bỏ một số dấu ngoặc kép.

Hiện hành:

<input type="hidden">

Mục đích:

<input type=hidden>

Điều này 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 hiểu biết của tôi):

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

Cú pháp / tổ hợp ký tự thoát để thay thế dấu ngoặc kép bằng một chuỗi trống là gì?

Câu trả lời:


211

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

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

đối với C #, bạn phải thoát khỏi dấu ngoặc kép bằng cách sử dụng dấu gạch chéo ngược:

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

1
này có một tác dụng phụ nếu có dấu ngoặc kép hơn nhúng trong chuỗi
Aadith Ramia

27

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

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

sẽ dẫn đến việc withOutQuotes được "hello"thay vì""hello""


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

Bạn cần sử dụng \ để thoát khỏi ký tự dấu ngoặc kép trong một chuỗi.


2
này có một tác dụng phụ nếu có dấu ngoặc kép hơn nhúng trong chuỗi
Aadith Ramia

14

Bạn có thể sử dụng một trong hai cách sau:

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

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


1
Tôi đang sử dụng HTML Agility Pack để 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. HTML Agility Pack 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 bài kiểm tra.)
Even Mien

này có một tác dụng phụ nếu có dấu ngoặc kép hơn nhúng trong chuỗi
Aadith Ramia


5

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

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


này có một tác dụng phụ nếu có dấu ngoặc kép hơn nhúng trong chuỗi
Aadith Ramia

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

1
này có một tác dụng phụ nếu có dấu ngoặc kép hơn nhúng trong chuỗi
Aadith Ramia


1

Điều 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;

1

Nếu bạn chỉ muốn loại bỏ các dấu ngoặc kép ở cuối chuỗi (không phải ở giữa) và có khả năng có khoảng trắng ở hai đầu chuỗi (tức là phân tích cú pháp tệp định dạng CSV trong đó có khoảng trắng sau dấu phẩy), thì bạn cần 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)

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

Hai dấu ngoặc kép cạnh nhau sẽ hoạt động như ký tự "dự định khi ở bên trong một chuỗi.


1
này có một tác dụng phụ nếu có dấu ngoặc kép hơn nhúng trong chuỗi
Aadith Ramia

0

nếu bạn muốn xóa một ký tự đơn lẻ, tôi đoán sẽ dễ dàng hơn khi chỉ cần đọc các mảng và bỏ qua ký tự đó và trả về mảng. Tôi sử dụng nó khi phân tích cú pháp tùy chỉnh json của vcard. vì nó không hợp lý với mã nhận dạng văn bản "được trích dẫn".

Thêm phương thức dưới đây vào một lớp chứa các phương thức mở rộng của bạn.

  public static string Remove(this string text, char character)
  {
      var sb = new StringBuilder();
      foreach (char c in text)
      {
         if (c != character)
             sb.Append(c);
      }
      return sb.ToString();
  }

sau đó bạn có thể sử dụng phương pháp mở rộng này:

var text= myString.Remove('"');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.