2010-03-25 11 views
2

Le compilateur C# interpole les littéraux de caractère spéciaux comme \ t pour tabulation, \ n pour le retour à la ligne, etc. Mais y a-t-il un C# intégré? Fonction .Net qui peut interpoler à l'exécution?Interpolation des caractères spéciaux ( t, n, r etc.) lors de l'exécution en C#

Par exemple, lors de l'exécution, j'ai lu une configuration pour un format de fichier texte délimité, peut-être quelque chose comme ceci:

Delimiter: \t 
LineEnding: \r\n 

En ce moment, la seule chose que je peux penser à faire est en train de lire dans la chaîne, puis effectuer un remplacement() avec des chaînes interpolée compilateur:

Delimiter = Delimiter.Replace(@"\n", "\n").Replace(@"\r", "\r"); 
+3

Quel est le problème avec la façon dont vous le faites? – Dathan

+1

J'ai pensé qu'il serait stupide d'écrire ma propre fonction d'utilité et de la transporter partout s'il y avait quelque chose de intégré. Quelque chose qui gérera l'ensemble complet (\ 0, \ a, \ b, \ f, \ n, \ r, \ t, \ u, \ U, \ x, \ v). C'est un de ces "SURAINY il doit y avoir quelque chose de intégré pour cela" questions –

+1

Cela revient beaucoup - il devrait y avoir une bibliothèque standard pour cela, non? –

Répondre

6

Vous pouvez essayer Regex.Unescape qui satisfait possible à toutes vos exigences.

foreach (var special in new string[] { @"\n", @"\t", @"\r\n" }) 
{ 
    Console.WriteLine("|{0}|", special); 
    Console.WriteLine("|{0}|", Regex.Unescape(special)); 
    Console.WriteLine("----------------------"); 
} 

De MSDN:

Il remplace la représentation des caractères non imprimables avec les personnages eux-mêmes. Par exemple, remplace \ a par \ x07. Les représentations de caractères qu'il remplace sont \ a, \ b, \ e, \ n, \ r, \ f, \ t et \ v.

+0

Voilà, c'est exactement ce qu'il a fait. Merci! –

Questions connexes