2010-03-25 50 views
2

C#編譯器對特殊字符文字進行插值,如對於製表符,\ n對於換行符等等。但是有沒有內置的C#或.Net函數可以在運行時插入它們?在C#中運行時插入特殊字符( t, n, r等)

例如,在運行時我讀了分隔文本文件格式的配置,也許是這樣的:

Delimiter: \t 
LineEnding: \r\n 

現在我能想到這樣做的唯一的事情就是閱讀的字符串,然後執行與編譯器插入一個字符串替換():

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

你這樣做的方式有什麼問題? – Dathan 2010-03-25 15:45:47

+1

我想如果有內置的東西,編寫我自己的效用函數並隨身攜帶它是愚蠢的。一些可以處理整個集合(\ 0,\ a,\ b,\ f,\ n,\ r,\ t,\ u,\ U,\ x,\ v)的東西。這是其中的一個「很明顯,這裏面有一些內置的東西」這個問題 – 2010-03-25 15:53:59

+1

這個問題出現了很多 - 應該有一個標準的庫,不是嗎? – 2010-03-25 15:56:33

回答

6

你可以嘗試Regex.Unescape這可能滿足您的所有需求。

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

從MSDN:

它取代與 人物本身 不可打印的字符表示。例如,它 用\ x07替換\ a。它替換的字符 是\ a, \ b,\ e,\ n,\ r,\ f,\ t和\ v。

+0

就是這樣,它確實做到了。謝謝! – 2010-03-25 16:03:51