2009-08-26 110 views
2

下面是从App.Config中的行:的String.Format值产生额外的反斜杠

<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只是根据需要逃避角色。 – 2009-08-26 14:17:14

回答

6

\ t是C#等标签的符号,但这不是在XML中的情况。你被解释为两个字符。尝试在配置文件中用&#09;替换\ t。

1

额外的反斜杠来自调试器显示值的方式。

字符串值的显示方式与您将其作为字符串文字写入代码的方式一样,因此字符串中的每个反斜杠都显示为\。

字符串中的反斜杠来自XML值,因为反斜杠不是XML中的转义字符。正如Richard解释的那样,您需要使用&#09;来获取XML值中的制表符。