データベースから値を取得して使用するC#コードを書いています。私が直面している問題は以下のとおりです。
データベースから取得した値が次の場合:
string cat1 = "sotheby's";
今、この猫を使用している間、私は一重引用符の前にエスケープ文字を挿入したいので、これを達成するために以下のコードを書きました:
string cat1 = "sotheby's";
if (cat1.Contains("'")) {
var indexofquote = cat1.IndexOf("'");
cat1.Insert(indexofquote-1,"\");
var cat2 = cat1;
}
エラーは挿入行、バックスラッシュ(エスケープ文字)で発生します。エラーは、定数の改行です。このエラーを修正する方法を教えてください。
C#コードで"\"
を書くことはできません。カウントされないように2番目の引用符を「エスケープ」するため、「定数の新しい行」エラーが生成されます。そして、文字列は閉じられていません。
いずれかの"\\"
を使用します(\
自体をエスケープします)
または@"\"
(逐語的な文字列)を使用します。
文字列リテラルのバックスラッシュはエスケープ文字であるため、それ自体をエスケープする必要があります。
"\\"
または、いわゆる逐語的な文字列リテラルを使用できます。
@"\"
参照: http://msdn.Microsoft.com/en-us/library/aa691090.aspx
コンパイルエラーについて:バックスラッシュは次の引用符をエスケープするため、文字列リテラルは閉じていると認識されません。次の文字)および;文字列リテラルには有効ですが、行末(改行)は無効です。したがって、エラー。
1つの単一引用符のみを置き換えます。それらをすべて使用するには:
string cat1_escaped = cat1.Replace("'", "\'");
多くのデータベースはそのような引用をエスケープせず、むしろそれらを二重にすることで:
string cat1_escaped = cat1.Replace("'", "''");