Ho un AppSetting in web.config.ConfigurationManager.AppSettings converte " n" in "\ n" perché?
<add key="key" value="\n|\r"/>
quando l'ho letto da ConfigurationManager.AppSettings["key"]
dà "\\ n | \\ r". Perché?
Ho un AppSetting in web.config.ConfigurationManager.AppSettings converte " n" in "\ n" perché?
<add key="key" value="\n|\r"/>
quando l'ho letto da ConfigurationManager.AppSettings["key"]
dà "\\ n | \\ r". Perché?
Nel debugger, perché il backslash è un carattere speciale utilizzato per elementi come tab (\ t) e terminazioni di riga (\ n), deve essere sfuggito utilizzando un'altra barra rovesciata. Quindi qualsiasi testo che contiene un \ reale verrà visualizzato come \. Se lo stampi su un file o lo usi in qualsiasi altro modo, troverai che la tua stringa contiene solo quella.
Questo non è il ConfigurationManager che fa qualcosa.
string str = "\n";// means \n
string str1 = @"\n";// means \\n
Dalle AppSettings, sembra che quando si estrae il valore della chiave, @ è avvolto internamente .. E 'fatto dal compilatore non runtime.
Ho risolto lo stesso problema con una sostituzione di stringa .
Non bello ... ma funziona!
ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n")
grazie salvato la mia giornata // –
La sintassi di backslash escape è riconosciuta solo all'interno di stringhe letterali dal compilatore C#. Poiché la stringa viene letta da un file XML in fase di runtime, è necessario utilizzare l'escaping compatibile con XML (entità carattere) per includere quei caratteri nella stringa. Così, la voce impostazioni dell'applicazione dovrebbe apparire come il seguente:
<add key="key" value="&x10;|&x13;"/>
Perché 10 e 13 sono i valori esadecimali per avanzamento riga e ritorno a capo, rispettivamente.
Come ha detto cjk, la barra in più viene inserita dal debugger per indicare che sta visualizzando una barra letterale e non una sequenza di escape.
La tua domanda non corrisponde correttamente al tuo titolo ... – cjk
@cjk: perché pensi? per favore leggi attentamente la domanda. –
Lo hai aggiornato ora. Nel debugger vedi '\\ n | \\ r'? – cjk