2013-01-23 65 views
71

雙引號可以逃脫這樣的:逃生字符串雙引號

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

但是,這涉及添加字符"字符串。是否有C#函數或其他方法來轉義雙引號,以便不需要更改字符串?

+3

你可以使用「Hello World」這樣的 – Pandian

+0

你真的想要什麼結果? 「在文字串中變成」。 – Roel

回答

103

要麼使用逐字字符串,你有,或使用反斜線逃避"

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

字符串在任何情況下並沒有改變 - 有一個在逃跑了"。這只是告訴C#字符是字符串的一部分而不是字符串終止符的一種方式。

5

你誤會了逃跑。

額外的"字符是字符串文字的一部分;它們被編譯器解釋爲單個"

字符串的實際值仍然是He said to me , "Hello World".How are you ?,如果您在運行時打印它,您會看到它。

26

你可以用任何方式使用反斜槓;

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

"仍然是您的字符串的一部分。

檢出Escape SequencesString literalsMSDN

3

請解釋你的問題。你說:?

但是,這涉及添加字符「字符串

那是什麼問題,你不能鍵入string foo = "Foo"bar"";,因爲這會引起編譯錯誤對於加入部分,在字符串大小而言,事實並非如此:

@"""".Length == "\"".Length == 1 
12

在C#中,你可以使用反斜槓把特殊字符您的字符串 例如,把」你的東東。 d寫「\」。 有很多,你寫使用反斜槓字符: 反斜槓擁有多項:

  • \ 000空
  • \ 010退格
  • \ 011水平製表
  • \ 012新線
  • \ 015回車
  • \ 032替代
  • \ 042雙引號
  • \ 047單引號
  • \ 134反斜槓
  • \ 140重音符

反斜槓與水淨化字符

  • \一個貝爾(警報)
  • \ b退格
  • \ f Formfeed
  • \ n新行
  • \ r回車
  • \ t水平製表
  • \ v垂直製表
  • \」單引號
  • \」雙引號
  • \反斜槓
  • \?文字問號
  • \ OOO ASCII字符以八進制表示法
  • 在十六進制表示法
  • \ X HH ASCII字符
  • 在如果此轉義序列在寬字符時使用的常或Unicode十六進制表示法\ X HHHH Unicode字符字符串字面量。例如,WCHAR f = L'\ x4e00'或WCHAR b [] = L「其中一個漢字是\ x4e00」。