簡體   English   中英

ConfigurationManager.AppSettings將“\ n”轉換為“\\ n”為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM