我有一个奇怪的问题。
我尝试读取数据迁移的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\""
所有这些反斜杠来自哪里?我读错了文件。我该如何防止这种情况?因为它破坏了我对数据的进一步处理。
答案 0 :(得分:6)
调试器只显示在代码中文字中出现的值(注意它也被引号括起来)。您可以单击小放大镜打开仅文本视图,该视图不会在其中放置反斜杠。
如果您对此有疑问,可以将您阅读的文字写入控制台进行验证。
答案 1 :(得分:2)
它们只是调试视图的工件。该字符串实际上只包含"
,但调试视图将其显示为\"
。将字符串写入控制台,或显示一个消息框,您将看到那些\
实际上并不在那里。
这使您可以查看字符串中是否包含"
"
,还是终止字符串的"
。它与C#中用于字符串文字的语法相同。
无论是什么破坏了您对数据的进一步处理,都不是您在调试视图中看到的"
的转义。
答案 2 :(得分:1)
你也读过引号。组合反斜杠+引用仅在调试器中显示(c#strings ...),否则它只是一个引用。
如果您不需要它们,请修剪列值。
编辑:我可以在评论中看到您正在使用名称第一列的值创建文件夹。文件夹名称不能包含"