2010-05-15 30 views
10

我想將一個xml代碼分配給一個字符串變量。 我可以通過在python中使用三引號來避免單引號或雙引號。 在F#或C#中有類似的方法嗎?有點像F#(或C#)中的python三重引號?

+0

好像三引號STRI ngs正在進入F#3.0。 – 2012-03-23 22:39:56

回答

8

一倍據我所知,在C#/ F#中沒有對應的語法。如果你使用@"str"那麼你必須用兩個引號替換引號,如果你只是使用"str"那麼你需要添加反斜槓。

在任何情況下,存在"一些編碼:

var str = @"allows 
    multiline, but still need to encode "" as two chars"; 
var str = "need to use backslahs \" here"; 

然而,當你需要嵌入大的字符串(如XML數據)做的到你的應用的最好的事情可能是使用。 NET資源(或將數據存儲在其他地方,具體取決於您的應用程序)。通常不推薦在程序中嵌入大字符串文字。此外,還有used to be a plugin用於將XML粘貼爲構建用於C#的XElement對象的樹,但我不確定它是否仍存在。

雖然我個人投票選擇從Python到F#已知的""",但它非常有用,尤其是對於交互式腳本。

+0

Thnx Tomas。我只想通過嵌入來輕鬆管理許多「簡短」xml文件。我想我應該使用單引號來表示XML屬性。順便說一句,我讀了你的書。這很棒。 – 2010-05-15 21:57:06

+1

@tk:謝謝!是的,我認爲嵌入字符串並不像指南所說的那樣「邪惡」...... – 2010-05-15 22:34:37

0

在C#語法@"some string"

see here

+0

看起來更像一個三重引號的原始字符串。 – 2010-05-15 21:29:25

+3

你仍然需要在字符串中編碼''',所以這不是Python的''「」'語法的等價物。 – 2010-05-15 22:35:18

1

正如shoosh說,你要使用的逐字字符串在C#中,其中字符串@開始,並用雙引號。唯一的例外是,如果你需要把一個雙引號字符串中,在這種情況下,你需要

System.Console.WriteLine(@"Hello ""big"" world");

將輸出

Hello "big" world

http://msdn.microsoft.com/en-us/library/362314fe.aspx

14

F#3.0支持三重引號字符串。見Visual Studio F# Team Blog Post on 3.0 features.

F# 3.0 Spec字符串和字符節專門提到了XML方案:

三重引號字符串使用三個引號 規定(「」「),以確保一個字符串包括一個或多個轉義 串被逐字解釋例如,三重引號字符串 可以用來嵌入XML斑點:

相關問題