246

二重引用符は次のようにエスケープできます。

string test = @"He said to me, ""Hello World"". How are you?";

ただし、これには文字列への文字の追加が含ま"れます。文字列を変更する必要がないように、二重引用符をエスケープする C# 関数またはその他の方法はありますか?

4

7 に答える 7

305

いいえ。

そのまま逐語的な文字列リテラルを使用するか、"バックスラッシュを使用してエスケープします。

string test = "He said to me, \"Hello World\" . How are you?";

どちらの場合も文字列は変更されていません。エスケープ "された文字列が1つあります。これは、文字が文字列の一部であり、文字列ターミネータではないことをC#に通知する方法にすぎません。

于 2013-01-23T13:21:55.410 に答える
126

バックスラッシュはどちらの方法でも使用できます。

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です。

"まだ文字列の一部です。

詳細については、C#および.NETの記事でJonSkeetの文字列を確認できます。

于 2013-01-23T13:23:27.783 に答える
22

C# では、バックスラッシュを使用して特殊文字を文字列に入れることができます。たとえば、置く"には、書く必要があります\"。バックスラッシュを使って書く文字はたくさんあります:

バックスラッシュと他の文字

  \0 nul character
  \a Bell (alert)
  \b Backspace
  \f Formfeed
  \n New line
  \r Carriage return
  \t Horizontal tab
  \v Vertical tab
  \' Single quotation mark
  \" Double quotation mark
  \\ Backslash

数字による任意の文字置換:

  \xh to \xhhhh, or \uhhhh - Unicode character in hexadecimal notation (\x has variable digits, \u has 4 digits)
  \Uhhhhhhhh - Unicode surrogate pair (8 hex digits, 2 characters)
于 2013-01-23T13:42:08.067 に答える
8

あなたは逃げるのを誤解しています。

余分な"文字は文字列リテラルの一部です。それらはコンパイラによって単一 "として解釈されます。

He said to me, "Hello World". How are you?実行時に文字列を出力するかどうかがわかるように、文字列の実際の値はまだです。

于 2013-01-23T13:22:02.820 に答える
6

あなたの問題を説明してください。あなたは言う:

ただし、これには文字 " を文字列に追加する必要があります。

それは何の問題ですか?string foo = "Foo"bar"";コンパイル エラーが発生するため、 と入力することはできません。追加部分については、文字列サイズに関しては正しくありません。

@"""".Length == 1

"\"".Length == 1
于 2013-01-23T13:26:48.173 に答える