2009-10-20 74 views
8

如果你有一個無數雙引號的字符串,如何在C#中的字符串中輕鬆顯示雙引號?

在PHP中,你可以這樣做:

file.WriteLine('<controls:FormField Name="Strasse" LabelText="Strasse">'); 

在C#中,你必須這樣做:

file.WriteLine("<controls:FormField Name=\"Strasse\" LabelText=\"Strasse\">"); 

是否有辦法在C#中,你可以使用PHP做的事情,比如@「c:\ temp」,你可以這樣做,不需要雙斜槓?

感謝弗雷德裏克,這使得即使引號和大括號中相當可讀的String.Format:

file.WriteLine(String.Format(@"<TextBox Text=""{{Binding {0}}}"" 
Style=""{{DynamicResource FormularFieldTextBox}}""/>", fieldName)); 

回答

27

有兩種方式來表示在C#中的字符串引號:

file.WriteLine("<controls:FormField Name=\"Strasse\" LabelText=\"Strasse\">"); 
file.WriteLine(@"<controls:FormField Name=""Strasse"" LabelText=""Strasse"">"); 
7
"<controls:FormField Name='Strasse' LabelText='Strasse'>".Replace("'", "\"") 

這不是很好,但是唯一的選擇。

或@「」「」 insted的的\」你可以使用‘’

+2

+1創意 – 2009-10-20 13:31:14

+1

呀,只是如果你有'<... LabelText的= 「奧尼爾」>'?然後突然你用雙引號替換了合法的單引號,現在你得到了一些無效的XML ...哎呀。 – 2009-10-20 13:41:17

+1

@Dan:誰給他們的孩子命名O'Neil,那就是http://xkcd.com/327/ – 2009-10-20 13:52:21

1

我會建議避免這樣一些奇怪的方式:

const char doubleQuote = '"'; 

Console.WriteLine("<controls:FormField Name={0}Strasse{0} LabelText={0}Strasse{0}>", doubleQuote); 
0

我會建議使用一個資源文件來存儲字符串常量。 這增加了優雅和代碼的可讀性。 另外,可以在不使用太多的轉義序列亂搞顯示引號和特殊字符。

您可以創建一個資源文件條目類似,

String Name(Key) => FormFieldControl 
Value => <controls:FormField Name="{0}" LabelText="{1}"> 

這可以在代碼中使用像

const string fieldName = "Strasse"; 
Console.WriteLine(ResourceFile.FormFieldControl, fieldName, fieldName); 
相關問題