Здесь строка из App.Config:
<add key="CheckFileFormatString" value="P{0}\t"{1}, {2}"\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}
Где добавляется дополнительная обратная косая черта?
\ t является символом для вкладки в С# и т.д., но это не так в XML. Ваш \t интерпретируется как два символа. Попробуйте заменить \t на 	
в вашем файле конфигурации.
Дополнительная обратная косая черта происходит от того, как отладчик отображает значение.
Строковое значение смещается так же, как вы можете записать его как строковый литерал в коде, поэтому каждый обратный слэш в строке отображается как \.
Обратные косые черты в вашей строке исходят из значения XML, поскольку обратная косая черта не является символом escape в XML. Как объяснил Ричард, вам нужно использовать 	
, чтобы получить символ табуляции в значении XML.