我在 web.config 中有一个AppSetting。
<add key="key" value="\n|\r"/>
当我通过ConfigurationManager.AppSettings["key"]
阅读时,它会提供“\\ n | \\ r”。
为什么?
答案 0 :(得分:3)
在调试器中,因为反斜杠是一个特殊字符,用于标签(\ t)和行结尾(\ n)之类的东西,它必须通过使用另一个反斜杠进行转义。因此,任何包含实际\的文本都将显示为\。如果您将其打印到文件或以任何其他方式使用它,您会发现您的字符串只包含该文件。
这不是ConfigurationManager做任何事情。
答案 1 :(得分:2)
反斜杠转义语法只能由C#编译器在字符串文字内部识别。由于您的字符串是在运行时从XML文件中读取的,因此您需要使用与XML兼容的转义(字符实体),以便在字符串中包含这些字符。因此,您的应用设置条目应如下所示:
<add key="key" value="&x10;|&x13;"/>
因为10和13分别是换行和回车的十六进制值。
就像cjk所说的那样,调试器插入了额外的斜杠,表明它正在看到 literal 斜杠而不是转义序列。
答案 2 :(得分:1)
我用字符串替换解决了同样的问题 不漂亮..但是有效!
ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n")
答案 3 :(得分:0)
string str = "\n";// means \n
string str1 = @"\n";// means \\n
从AppSettings中,似乎在提取键的值时,@是内部包装的..它由编译器完成而不是运行时。