当前位置: 首页 > 编程语言 > C#

如何使用C#split()函数正确拆分CSV?Share

时间:2023-04-10 17:42:00 C#

如何使用C#split()函数正确拆分CSV?假设我有这个CSV文件:NAME,ADDRESS,DATE"EkoS.Wibowo","Tamanan,Banguntapan,Bantul,DIY","6/27/1979"我想用双引号括起来的每个标记存储在一个数组中,这样做而不是使用Stringsplit()函数安全吗?目前,我将文件加载到RichTextBox中,然后使用其Lines[]属性,为每个Lines[]元素执行一个循环并执行以下操作:string[]line=s.Split(',');s是对RichTextBox的引用。对Lines[]的引用。正如您可以清楚地看到的那样,标记内的逗号很容易搞乱split()函数。所以,我没有得到我想要的三个令牌,而是得到了6个令牌任何帮助将不胜感激!您还可以使用正则表达式:stringinput=""EkoS.Wibowo","Tamanan,Banguntapan,Bantul,DIY","6/27/1979"";字符串模式=@"""s*,s*""";//input.Substring(1,input.Length-2)从字符串中删除第一个和最后一个"string[]tokens=System.Text.RegularExpressions.Regex.Split(input.Substring(1,input.Length-2),pattern);这会给你:EkoS.WibowoTamanan,Banguntapan,Bantul,DIY6/27/1979我用我自己的方法做了这个。它只计算"和'字符的大小。根据您的需要进行改进。publicListSplitCsvLine(strings){inti;整数=0;整数计数=0;列表str=新列表();for(i=0;i这不是你问题的确切答案,但你为什么不使用已经编写的库来操作CSV文件,一个很好的例子是LinqToCsv。CSV可以用各种标点符号分隔。另外,有一些问题,库创建者已经解决了。比如处理名称行,处理不同的日期格式和将行映射到C#对象。如果你的CSV行是紧凑的,最简单的方法是使用前面提到的结束和尾部删除通过对连接的字符串进行简单拆分string[]tokens=input.Substring(1,input.Length-2).Split("","");只有所有字段都用双引号引起来时才有效,即使它们不需要(官方)。它会比RegEx更快,但是在使用它的时候会有一定的条件。如果你的数据看起来像"Name","1","12/03/2018","Add1,Add2,Add3","somethingelse",如果能用","代替就好了;然后拆分;以上是C#学习教程:如何使用C#split()函数正确拆分CSV?所有分享的内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注—varvalues=s.Replace("","",";").Split(';');转载请注明出处: