streamreader中字符串中的反斜杠

时间:2012-05-23 10:25:28

标签: c# csv

我有一个奇怪的问题。

我尝试读取数据迁移的csv文件。这是文件的外观(其UTF8格式)

"MIGRATIONID","ACCOUNTID","MIGRACCOUNTID","CONFIGID","MEDIUMID","PRIMCLASSID","SECCLASSID","SALESCODE","CONTENT","REGELNR","LIST_ATTRIBUTES","PACKAGE_TYPE","VERWIJSADVERTENTIE","NIET_PUBLICEREN"
"ITM-0015-0163","62222532","ACT-0000-4755","61635591","TGP","TG_P_GV_01","","TG_Print_GV","%NAME%|%STREETNAME%|%HOUSENUMBER%|%HOUSENUMBEREXT%||%POSTALCODE%|%LOCALITY%|%AREACODE%|%CONNECTIONNUMBER%|%URL%|%EMAIL%||%COMMERCIAL%||||||%PRODNR%","10","","","","FALSE"
"ITM-0015-0172","62222140","ACT-0000-4779","61636356","TGP","TG_P_GV_01","","TG_Print_GV","%NAME%|%STREETNAME%|%HOUSENUMBER%|%HOUSENUMBEREXT%||%POSTALCODE%|%LOCALITY%|%AREACODE%|%CONNECTIONNUMBER%|%URL%|%EMAIL%||%COMMERCIAL%||||||%PRODNR%","10","","","","FALSE"

如您所见,它以逗号分隔。

我使用streamreader阅读它:

System.IO.StreamReader file = new System.IO.StreamReader(documentFilePath, Encoding.UTF8);
while ((line = file.ReadLine()) != null)
{
    //perform the transformation
}

我已经做了一百万次没有问题。但是,当读取行时,它们会突然出现(从调试监视器中复制):

"\"ITM-0015-0163\",\"62222532\",\"ACT-0000-4755\",\"61635591\",\"TGP\",\"TG_P_GV_01\",\"\",\"TG_Print_GV\",\"%NAME%|%STREETNAME%|%HOUSENUMBER%|%HOUSENUMBEREXT%||%POSTALCODE%|%LOCALITY%|%AREACODE%|%CONNECTIONNUMBER%|%URL%|%EMAIL%||%COMMERCIAL%||||||%PRODNR%\",\"10\",\"\",\"\",\"\",\"FALSE\""

所有这些反斜杠来自哪里?我读错了文件。我该如何防止这种情况?因为它破坏了我对数据的进一步处理。

3 个答案:

答案 0 :(得分:6)

调试器只显示在代码中文字中出现的值(注意它也被引号括起来)。您可以单击小放大镜打开仅文本视图,该视图不会在其中放置反斜杠。

如果您对此有疑问,可以将您阅读的文字写入控制台进行验证。

答案 1 :(得分:2)

它们只是调试视图的工件。该字符串实际上只包含",但调试视图将其显示为\"。将字符串写入控制台,或显示一个消息框,您将看到那些\实际上并不在那里。

这使您可以查看字符串中是否包含" ",还是终止字符串的"。它与C#中用于字符串文字的语法相同。

无论是什么破坏了您对数据的进一步处理,都不是您在调试视图中看到的"的转义。

答案 2 :(得分:1)

你也读过引号。组合反斜杠+引用仅在调试器中显示(c#strings ...),否则它只是一个引用。

如果您不需要它们,请修剪列值。

编辑:我可以在评论中看到您正在使用名称第一列的值创建文件夹。文件夹名称不能包含"