Значение String.Format в App.config создает дополнительную обратную косую черту

2

Здесь строка из 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}

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

  • 1
    Я не вижу дополнительной обратной косой черты. .NET просто экранирует символы по мере необходимости.
Теги:
app-config
string-formatting

2 ответа

6
Лучший ответ

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

1

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню