2009-08-26 7 views
2

Voici la ligne de App.Config:valeur String.Format dans App.config est produit un backslash supplémentaire

<add key="CheckFileFormatString" value="P{0}\t&quot;{1}, {2}&quot;\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}"/> 

Voici le code qui le met dans une chaîne (s'il vous plaît ignorer l'appel .AppSettings.Get désapprouvée, à moins que ce le problème):

string format = ConfigurationSettings.AppSettings.Get("CheckFileFormatString"); 

... et voici la chaîne résultante:

P{0}\\t\"{1}, {2}\"\\t{3}\\t{4}\\t{5}\\t{6}\\t{7}\\t{8}\\t{9}\\t{10} 

D'où vient le backslash supplémentaire?

+1

Je ne vois pas le backslash supplémentaire. .NET échappe simplement aux caractères si nécessaire. –

Répondre

6

\ t est le symbole d'un onglet en C# etc., mais ce n'est pas le cas en XML. Votre \ t est interprété comme deux caractères. Essayez de remplacer \ t avec &#09; dans votre fichier de configuration.

1

La barre oblique inverse supplémentaire provient de la façon dont le débogueur affiche la valeur.

La valeur de chaîne est déplacée de la même manière que vous l'écrivez en tant que littéral de chaîne dans le code, de sorte que chaque barre oblique inverse de la chaîne est affichée sous la forme \.

Les barres obliques inverses dans votre chaîne proviennent de la valeur XML, car les barres obliques inverses ne sont pas des caractères d'échappement dans XML. Comme Richard l'a expliqué, vous devez utiliser &#09; pour obtenir un caractère de tabulation dans la valeur XML.

Questions connexes