Значение String.Format в App.config создает дополнительную обратную косую черту - PullRequest
2 голосов
/ 26 августа 2009

Вот строка из App.Config:

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

Вот код, который помещает его в строку (пожалуйста, игнорируйте устаревший вызов .AppSettings.Get, если это не проблема):

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

... и вот результирующая строка:

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

Откуда берется дополнительная обратная косая черта?

Ответы [ 2 ]

6 голосов
/ 26 августа 2009

\ t - это символ для вкладки в C # и т. Д., Но в XML это не так. Ваш \ t интерпретируется как два символа. Попробуйте заменить \ t на &#09; в вашем конфигурационном файле.

1 голос
/ 26 августа 2009

Дополнительная обратная косая черта возникает из-за того, как отладчик отображает значение.

Строковое значение выводится так же, как вы бы записали его как строковый литерал в коде, поэтому каждая обратная косая черта в строке отображается как \.

Обратная косая черта в вашей строке основана на значении XML, так как обратная косая черта не является escape-символом в XML. Как объяснил Ричард, вам нужно использовать &#09;, чтобы получить символ табуляции в значении XML.

...