2011-05-04 95 views
4

可能重複:
Can I expand a string that contains C# literal expressions at runtimeC# - 如何將轉義字符串轉換爲文字字符串?

我如何轉換從一個文件在運行時,例如讀取轉義字符串

"Line1\nLine2" 

成其文字值:

Line1 
Line2 

令人驚訝的是我使用CSharpCodeProvider(),它好像它會是較困難的轉換已經找到一個例子做相反here。爲了做相反的事情,我需要生成代碼來定義一個類並將其編譯到內存中或執行一系列.Replace()調用,希望我不會錯過任何轉義序列。

+0

我認爲他的意思是把Line1 \ nLine2放入'「Line1 \ nLine2」'中。 – Ryan 2011-05-04 19:51:13

+1

你的目標是什麼?如果在代碼中包含一個像'string s =「Line \ nLine2」;'這樣的語句,然後在內存中運行時編譯並運行它,那麼變量s包含您想要創建的內容。 – Cheeso 2011-05-04 19:51:52

回答

0

通過\n

static void Main(string[] args) 
{ 
    var test = "Line1\\nLine2"; 

    // Line1\nLine2 
    Console.WriteLine(test); 

    // Line1 
    // Line2 
    Console.WriteLine(test.Replace("\\n", Environment.NewLine)); 

    Console.ReadKey(); 
} 
2

CSharpCodeProvider更換轉義值聽起來像它肯定可以在這裏做的伎倆。但是,在使用之前我會問2個問題:是否需要爲,正好是 C#字符串文字語法,並且是輸入文件是否可信?

CSharpCodeProvider顯然提供了C#編譯器的語法,但在我看來,似乎對於通過此路由將某些代碼注入到進程中相對容易。

Javascript字符串文字語法與C#字符串文字語法非常接近,.NET包含一個JavaScriptSerializer類,它可以解析這些字符串文字而不會將其作爲代碼注入到正在運行的進程中。

+0

我正在使用正則表達式,將它們從源代碼複製到測試它們,然後通過修改粘貼它們。因爲它們是正則表達式,所以它們需要精確地來回翻譯。這被用於一個骯髒的小工具來簡化這個過程。 – Brandon 2011-05-04 21:09:12

+0

這是正確的答案。 這不是重複的,CodeDom的回答對於Ken給出的原因是有點荒謬的。 – Seth 2015-07-27 22:52:12

相關問題