.NETの文字列から二重引用符を取り除く


98

一貫性のない形式のHTMLに一致させようとしているため、二重引用符を削除する必要があります。

電流:

<input type="hidden">

目標:

<input type=hidden>

私はそれを適切にエスケープしていないので、これは間違っています:

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

(私の知る限り)空白文字がないため、これは間違っています。

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

二重引用符を空の文字列に置き換えるための構文/エスケープ文字の組み合わせとは何ですか?

回答:


211

最初の行は実際に機能すると思いますが、1つを含む文字列(少なくともVBでは)に4つの引用符が必要だと思います。

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

C#の場合、バックスラッシュを使用して引用符をエスケープする必要があります。

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

1
文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia

27

私の考えが既に繰り返されているのを見たことがなかったのでstring.Trim、C#のMicrosoftドキュメントを見て、単に空のスペースをトリミングする代わりに、トリミングする文字を追加できることをお勧めします。

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

"hello"代わりにwithOutQuotesになるはずです""hello""


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

文字列内の二重引用符をエスケープするには、\を使用する必要があります。


2
文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia

14

次のいずれかを使用できます。

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

...しかし、なぜあなたがそれをしたいのか、私は気になりますか?属性値を引用符で囲むことは良い習慣だと思いましたか?


1
特定のリンクを見つけるためにHTML Agility Packを使用していますが、そのリンクの値をHTMLテキストから削除する必要があります。HTML Agility Packは属性値を引用しますが、元のHTMLは引用されません。(そして、これらすべてを1つのテストで使用します。)
Mienでも

文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia


5

c#"\"":、したがってs.Replace("\"", "")

vb / vbs / vb.net:""したがってs.Replace("""", "")


文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia

3

二重引用符はバックスラッシュでエスケープする必要があります。

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

1
文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia

1

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


文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia

1

これは私のために働いた

//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

文字列の末尾(中央ではなく)から引用符を取り除きたい場合、文字列の両端にスペースがある可能性があります(つまり、後にスペースがあるCSV形式のファイルを解析します)コンマ)、次にTrim関数を2回呼び出す必要があります...例:

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

隣り合った2つの引用符は、文字列内で「意図した」文字として機能します。


1
文字列内に埋め込まれた引用符がさらにある場合、これには副作用があります
Aadith Ramia

0

単一の文字を削除したい場合は、配列を読み取ってその文字をスキップして配列を返すほうが簡単だと思います。vcardのjsonをカスタム解析するときに使用します。「引用符で囲まれた」テキスト識別子を持つ悪いjsonなので。

以下のメソッドを拡張メソッドを含むクラスに追加します。

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

その後、この拡張メソッドを使用できます。

var text= myString.Remove('"');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.