![](/img/trans.png)
[英]Why call .ToString() on ConfigurationManager.AppSettings[key]?
[英]ConfigurationManager.AppSettings convert “\n” to “\\n” why?
我在web.config中有一個AppSetting。
<add key="key" value="\n|\r"/>
當我通過ConfigurationManager.AppSettings["key"]
讀取它時,它給出“\\\\ n | \\\\ r” 。 為什么?
在調試器中,因為反斜杠是一個特殊字符,用於tab(\\ t)和行結尾(\\ n)之類的東西,它必須通過使用另一個反斜杠進行轉義。 因此,任何包含實際\\的文本都將顯示為\\。 如果您將其打印到文件或以任何其他方式使用它,您會發現您的字符串只包含一個。
這不是ConfigurationManager做任何事情。
反斜杠轉義語法只能由C#編譯器在字符串文字內部識別。 由於您的字符串是在運行時從XML文件中讀取的,因此您需要使用與XML兼容的轉義(字符實體),以便在字符串中包含這些字符。 因此,您的應用設置條目應如下所示:
<add key="key" value="&x10;|&x13;"/>
因為10和13分別是換行和回車的十六進制值。
就像cjk所說的那樣,調試器正在插入額外的斜杠,以表明它看到的是字面斜杠而不是轉義序列。
我用字符串替換解決了同樣的問題。
不是很漂亮......但是有效!
ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n")
string str = "\n";// means \n
string str1 = @"\n";// means \\n
從AppSettings,似乎當你提取鍵的值時,@是內部包裝的..它由編譯器而不是運行時完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.