二重引用符は次のようにエスケープすることができます。
string test = @"He said to me, ""Hello World"". How are you?";
しかしこれは文字列に文字"
を追加することを含みます。文字列を変更する必要がないように、二重引用符をエスケープするC#関数または他の方法はありますか。
いいえ.
そのままの文字列リテラルを使用するか、バックスラッシュを使用して"
をエスケープします。
string test = "He said to me, \"Hello World\" . How are you?";
どちらの場合も文字列は変更されていません - 単一のエスケープ"
があります。これは、文字が文字列の一部であり、文字列の終端文字ではないことをC#に伝えるための単なる方法です。
どちらの方法でもバックスラッシュを使用できます。
string str = "He said to me, \"Hello World\". How are you?";
印刷します。
He said to me, "Hello World". How are you?
これはまったく同じです。
string str = @"He said to me, ""Hello World"". How are you?";
これが DEMO
です。
"
はまだあなたの文字列の一部です。
MSDNから Escape Sequences
と String literals
を調べてください。
C#では、バックスラッシュを使って文字列に特殊文字を付けることができます。例えば、「」を書くには、「」と書く必要があります。あなたがバックスラッシュを使って書く多くの文字があります:バックスラッシュと数字:
他の文字とバックスラッシュ
あなたは誤解して逃げています。
余分な"
文字は文字列リテラルの一部です。それらは、コンパイラによってsingle"
として解釈されます。
あなたが実行時にそれを印刷するかどうかがわかるでしょう、あなたの文字列の実際の値はまだHe said to me , "Hello World".How are you ?
です。
あなたの問題を説明してください。あなたは言う:
しかしこれは文字列に文字 ""を追加することを含みます。
それはどんな問題ですか? string foo = "Foo"bar"";
と入力することはできません。コンパイルエラーが発生するためです。 追加の部分に関しては、文字列サイズの用語ではそれは正しくありません:
@"""".Length == "\"".Length == 1