web-dev-qa-db-ja.com

定数エラーの改行

データベースから値を取得して使用するC#コードを書いています。私が直面している問題は以下のとおりです。

データベースから取得した値が次の場合:

 string cat1 = "sotheby's";

今、この猫を使用している間、私は一重引用符の前にエスケープ文字を挿入したいので、これを達成するために以下のコードを書きました:

  string cat1 = "sotheby's";
                    if (cat1.Contains("'")) {
                        var indexofquote = cat1.IndexOf("'");
                        cat1.Insert(indexofquote-1,"\");
                        var cat2 = cat1;
                    }

エラーは挿入行、バックスラッシュ(エスケープ文字)で発生します。エラーは、定数の改行です。このエラーを修正する方法を教えてください。

26
Furquan Khan

C#コードで"\"を書くことはできません。カウントされないように2番目の引用符を「エスケープ」するため、「定数の新しい行」エラーが生成されます。そして、文字列は閉じられていません。

いずれかの"\\"を使用します(\自体をエスケープします)
または@"\"(逐語的な文字列)を使用します。

39
Henk Holterman

文字列リテラルのバックスラッシュはエスケープ文字であるため、それ自体をエスケープする必要があります。

"\\"

または、いわゆる逐語的な文字列リテラルを使用できます。

@"\"

参照: http://msdn.Microsoft.com/en-us/library/aa691090.aspx

コンパイルエラーについて:バックスラッシュは次の引用符をエスケープするため、文字列リテラルは閉じていると認識されません。次の文字)および;文字列リテラルには有効ですが、行末(改行)は無効です。したがって、エラー。

2
nodots

1つの単一引用符のみを置き換えます。それらをすべて使用するには:

string cat1_escaped = cat1.Replace("'", "\'");

多くのデータベースはそのような引用をエスケープせず、むしろそれらを二重にすることで:

string cat1_escaped = cat1.Replace("'", "''");
0
user1847879