2009-10-20 16 views
8

Si vous avez une chaîne avec de nombreux guillemets doubles,Comment afficher facilement les guillemets doubles dans les chaînes en C#?

en PHP, vous pouvez le faire:

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

en C# que vous devez faire ceci:

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

est-il un moyen en C# pour faire ce que vous pouvez faire ci-dessus en PHP, quelque chose comme le @ "c: \ temp" que vous pouvez faire pour que vous n'ayez pas besoin de doubles barres obliques?

Merci Fredrik, qui fait des citations même et accolades dans un String.Format assez lisible:

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

Répondre

27

Il existe deux façons de représenter les guillemets dans les chaînes 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("'", "\"") 

Ce qui n'est pas génial, mais à propos de la seule option.

Ou @ « » « » insted de \ » vous pouvez utiliser « »

+2

+1 pour la créativité –

+1

Ouais, sauf si vous avez '<... LabelText = "O'Neil">'? Puis, soudainement, vous avez remplacé un guillemet simple légitime par des guillemets doubles, et maintenant vous avez un XML invalide ... whoops. –

+1

@Dan: Qui nomme leur enfant O'Neil, c'est juste là-bas avec http://xkcd.com/327/ –

1

Je vous conseille d'éviter une certaine façon bizarre comme ceci:

const char doubleQuote = '"'; 

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

Je recommanderais d'utiliser un fichier de ressources pour stocker les les constantes de chaîne. ce qui augmente l'élégance et la lisibilité du code. en outre, des citations et des caractères spéciaux peuvent être affichés sans déconner avec trop de séquences d'échappement.

Vous pouvez créer une entrée de fichier de ressources comme,

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

Ceci peut être utilisé dans le code comme

const string fieldName = "Strasse"; 
Console.WriteLine(ResourceFile.FormFieldControl, fieldName, fieldName); 
Questions connexes