У меня есть AppSetting в web.config.ConfigurationManager.AppSettings конвертировать « n» в «\ n» почему?
<add key="key" value="\n|\r"/>
Когда я прочитал его ConfigurationManager.AppSettings["key"]
дает "\\ п | \\ г". Почему?
У меня есть AppSetting в web.config.ConfigurationManager.AppSettings конвертировать « n» в «\ n» почему?
<add key="key" value="\n|\r"/>
Когда я прочитал его ConfigurationManager.AppSettings["key"]
дает "\\ п | \\ г". Почему?
В отладчике, поскольку обратная косая черта - это специальный символ, используемый для таких вещей, как вкладки (\ t) и окончания строк (\ n), он должен быть экранирован с помощью другой обратной косой черты. Следовательно, любой текст, содержащий фактический \, будет отображаться как \. Если вы распечатаете его в файл или используете его каким-либо другим способом, вы обнаружите, что ваша строка содержит только одну.
Это не ConfigurationManager ничего не делает.
string str = "\n";// means \n
string str1 = @"\n";// means \\n
Из AppSettings, кажется, что, когда вы извлекаете ценность ключа, @ внутренне завернутые .. Это делается компилятором не во время выполнения.
Я решил ту же проблему с заменой строки .
Не красивый, но работает!
ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n")
спасибо, спасли мой день // –
Синтаксис прокрутки обратной косой черты распознается только внутри строковых литералов компилятором C#. Поскольку ваша строка считывается из XML-файла во время выполнения, вам нужно использовать совместимое с XML экранирование (символьные сущности), чтобы включить эти символы в вашу строку. Таким образом, запись в настройках приложения должна выглядеть следующим образом:
<add key="key" value="&x10;|&x13;"/>
Поскольку 10 и 13 являются шестигранными значениями для перевода строки и возврата каретки, соответственно.
Как и cjk, дополнительная слэша вставляется отладчиком, чтобы указать, что он видит литерал слэш, а не escape-последовательность.
Ваш вопрос не соответствует вашему названию должным образом ... – cjk
@cjk: почему вы так думаете? внимательно прочитайте. –
Вы обновили его сейчас. Это в отладчике вы видите '\\ n \\ r'? – cjk