2013-04-29 89 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