Hapus tanda kutip ganda dari string di .NET

100

Saya mencoba mencocokkan beberapa HTML yang diformat tidak konsisten dan perlu menghapus beberapa tanda kutip ganda.

Arus:

<input type="hidden">

Hasil:

<input type=hidden>

Ini salah karena saya tidak kabur dengan benar:

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

Ini salah karena tidak ada karakter karakter kosong (setahu saya):

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

Apa itu kombinasi karakter sintaks / escape untuk mengganti tanda kutip ganda dengan string kosong?

Bahkan Mien
sumber

Jawaban:

214

Saya pikir baris pertama Anda benar-benar akan berfungsi tetapi saya pikir Anda memerlukan empat tanda kutip untuk string yang berisi satu (setidaknya dalam VB):

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

untuk C # Anda harus melepaskan diri dari tanda kutip menggunakan garis miring terbalik:

s = s.Replace("\"", "");
Joey
sumber
1
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
28

Saya tidak melihat pemikiran saya terulang, jadi saya akan menyarankan Anda untuk melihat string.Trimdalam dokumentasi Microsoft untuk C # Anda dapat menambahkan karakter yang akan dipangkas daripada hanya memangkas ruang kosong:

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

harus menghasilkan withOutQuotes, "hello"bukan""hello""

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

Anda perlu menggunakan \ untuk keluar dari karakter kutip ganda dalam sebuah string.

David
sumber
2
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
14

Anda dapat menggunakan salah satu dari ini:

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

... tapi saya penasaran mengapa Anda ingin melakukan itu? Saya pikir itu praktik yang baik untuk menjaga nilai atribut tetap dikutip?

Fredrik Mörk
sumber
1
Saya menggunakan HTML Agility Pack untuk menemukan tautan tertentu, dan kemudian saya perlu menghapus nilai di tautan itu dari teks HTML. Paket Agility HTML mengutip nilai atribut, tetapi HTML asli tidak dikutip. (Dan semua ini untuk satu tes.)
Even Mien
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
6
s = s.Replace("\"",string.Empty);
Steve Gilham
sumber
1
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
5

c # "\"":, dengan demikians.Replace("\"", "")

vb / vbs / vb.net: ""jadis.Replace("""", "")

svinto
sumber
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
3

Anda harus menghindari tanda kutip ganda dengan garis miring terbalik.

s = s.Replace("\"","");
Jake Pearson
sumber
1
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
1

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

gHeidenreich
sumber
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
1

Ini berhasil untuk saya

//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;
pengguna3519062
sumber
1

Jika Anda hanya ingin menghapus tanda kutip dari ujung string (bukan di tengah), dan ada kemungkinan ada spasi di kedua ujung string (yaitu mengurai file format CSV di mana ada spasi setelah koma), maka Anda perlu memanggil fungsi Trim dua kali ... misalnya:

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)
TJC
sumber
0
s = s.Replace( """", "" )

Dua tanda kutip di samping satu sama lain akan berfungsi sebagai karakter "yang diinginkan saat berada di dalam string.

Mike
sumber
1
ini memiliki efek samping jika ada lebih banyak kutipan yang disematkan dalam string
Aadith Ramia
0

jika Anda ingin menghapus satu karakter, saya kira lebih mudah untuk membaca array dan melewatkan karakter itu dan mengembalikan array. Saya menggunakannya saat melakukan parsing kustom json vcard. karena itu json buruk dengan pengidentifikasi teks "dikutip".

Tambahkan metode di bawah ini ke kelas yang berisi metode ekstensi Anda.

  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();
  }

Anda kemudian dapat menggunakan metode ekstensi ini:

var text= myString.Remove('"');
Walter Vehoeven
sumber