2009-08-26 2 views
2

Hier ist die Linie von App.Config:String.Format Wert in App.config erzeugt einen zusätzlichen Backslash

<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}"/> 

Hier ist der Code, der es in einen String (bitte ignorieren die veraltete .AppSettings.Get Anruf bringt, es sei denn, das ist das Problem):

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

... und hier ist die resultierende Zeichenfolge:

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

Woher kommt der zusätzliche Backslash?

+1

Ich sehe den zusätzlichen Backslash nicht. .NET entkommt einfach Charaktere nach Bedarf. –

Antwort

6

\ t ist das Symbol für eine Registerkarte in C# usw., dies ist jedoch in XML nicht der Fall. Dein \ t wird als zwei Zeichen interpretiert. Versuchen Sie, \ t mit &#09; in Ihrer Konfigurationsdatei zu ersetzen.

1

Der zusätzliche Backslash kommt davon, wie der Debugger den Wert anzeigt.

Der Zeichenfolgenwert wird genauso angezeigt, wie Sie ihn als Zeichenfolgenliteral in den Code schreiben würden. Daher wird jeder umgekehrte Schrägstrich in der Zeichenfolge als \ angezeigt.

Die umgekehrten Schrägstriche in der Zeichenfolge stammen vom XML-Wert, da umgekehrte Schrägstriche in XML kein Escapezeichen sind. Wie Richard erklärt, müssen Sie &#09; verwenden, um ein Tab-Zeichen im XML-Wert zu erhalten.