2013-04-29 44 views
2

我試圖讀取文本字段中有一些\n的CSV文件。當我使用我在DrawString中讀到的內容時,\n出現在文本中,而不是換行符。看着調試器中的字符串,看起來TextFieldParser已經自動爲我逃過了字符串。我沒有看到解決該行爲的類文檔中的任何屬性。C#TextFieldParser vs n

我試過用String.Replace()來解決這個問題。但我似乎無法得到\ \正確的轉義。

string[] fields = parser.ReadFields(); 
String From = @"\\n"; // I put these here so that I could look at them in the debugger 
String To = @"\n"; 
String Output = fields[1].Replace(From, To); 

它看起來像那些也都逃到了地獄,即使我使用@語法。

我知道當有人向我展示時,這會變得很簡單。請善待:-)

編輯----------

String Output = fields[1].Replace(@"\n", "\r\n"); 

測試和工程。謝謝。

回答

0

如果你看看調試器,它是可視化你的換行符。它不是轉義它(即它仍然是十六進制值爲0x10的ASCII字符,不是'\'和'n'兩個字符)。

DrawString不會將「\ n」(Unix風格的行)解釋爲「開始換行」。

但是,如果用「\ r \ n」替換「\ n」,它應該可以正常工作。

http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/17e645bf-6751-44d5-a5be-af322b589122/

+0

當我在文字中使用\ n時,DrawString會正確產生換行符。我用cript從字面上的例子。我只是用字符串「Test \ nTest」進行測試。嗯。找到一種不同的方式在調試器中查看它。當我點擊放大鏡圖標時,我只看到一個。我認爲有一種方法可以查看十六進制,但還沒有找到它。自從我上次使用Visual Studio以來已經過去了幾年。 – Mighty 2013-04-29 06:01:46

+0

編輯 - 找到如何看待十六進制 – Mighty 2013-04-29 06:09:15

+0

好的。使用替換字符串To = Strings.Chr(13).ToString()+ Strings.Chr(10).ToString();工作 – Mighty 2013-04-29 06:21:30