C# 在配额之间用分号替换逗号

C# 在配额之间用分号替换逗号,c#,vb.net,ssis,C#,Vb.net,Ssis,我有一个csv文件,从中我将数据放入表中。 例子: ABC,1,苹果 要求字符串位于配额内,整数不带引号。 上述行将分为三列。 我正在使用流阅读器类使用line.split','将行拆分为列。很遗憾,我在一个文件中得到了一条记录,其中字符串引号之间有一个逗号,如下所示 ABC,DEF,ghi,2,橙色。 因此,它们不再是3列,而是5列,所有转换都失败了。 有人能帮我用C写脚本吗?它将把配额之间的逗号替换成分号,并且不要碰列之间的逗号 谢谢。看起来您的CSV可能符合RFC 4180。使用RFC41

我有一个csv文件,从中我将数据放入表中。 例子: ABC,1,苹果 要求字符串位于配额内,整数不带引号。 上述行将分为三列。 我正在使用流阅读器类使用line.split','将行拆分为列。很遗憾,我在一个文件中得到了一条记录,其中字符串引号之间有一个逗号,如下所示 ABC,DEF,ghi,2,橙色。 因此,它们不再是3列,而是5列,所有转换都失败了。 有人能帮我用C写脚本吗?它将把配额之间的逗号替换成分号,并且不要碰列之间的逗号


谢谢。

看起来您的CSV可能符合RFC 4180。使用RFC4180解析器。其中许多是存在的。勾选此项:

此问题的答案如下:

您可以使用相同的正则表达式,?=[^\]*\[^\]*\*[^\]*$
并使用C方法Regex.Split。

如何在这些字符串中转义,或者您希望它们不包含?文件是否会发生更改?您可能需要创建一个枚举来定义文件头布局。。检查额外的列我在我的上一个项目中已经做了这项工作,否则在进行拆分后,你必须检查每个字符串的长度,因为ABC、DEF、ghi应该拆分为3列而不是1列,你能按照我说的做吗。。那么你必须把DEF ghi作为ABCi的一部分,我没有使用任何解析器,我在SSIS的脚本组件中使用C自定义脚本,那么为什么这有一个VB标记,如果你使用Chi,我没有正则表达式类,我需要使用该语句来获取我是C的初学者,请告诉我你有正则表达式类。您需要使用System.Text.RegularExpressions添加一个