拆分字符串并忽略引号内的分隔符

Tac*_*chi 13 .net c# regex vb.net csv

我使用.NET的String.Split方法使用逗号分解字符串,但我想忽略用双引号括起来的字符串.我读过那个

例如,下面的字符串.

Fruit,10,"Bananas, Oranges, Grapes"
Run Code Online (Sandbox Code Playgroud)

我想得到以下内容

Fruit
10
"Bananas, Oranges, Grapes"
Run Code Online (Sandbox Code Playgroud)

目前我得到以下输出

Fruit
10
"Bananas
 Oranges
 Grapes"
enter code here
Run Code Online (Sandbox Code Playgroud)

在提出以下建议和答案之后,这里是我最终得到的样本.(显然对我有用)

Imports Microsoft.VisualBasic.FileIO

Dim fileReader As New TextFieldParser(fileName)

fileReader.TextFieldType = FieldType.Delimited
fileReader.SetDelimiters(",")
fileReader.HasFieldsEnclosedInQuotes = True

While fileReader.EndOfData = False


Dim columnData() As String = fileReader.ReadFields

' Processing of field data

End While
Run Code Online (Sandbox Code Playgroud)

Jer*_*rry 10

你最好使用解析器,就像评论中提到的那样.也就是说,可以通过以下方式使用正则表达式来实现:

,(?=(?:[^"]*"[^"]*")*[^"]*$)
Run Code Online (Sandbox Code Playgroud)

正向前瞻((?= ... ))确保在逗号之前存在偶数引号以进行拆分(即它们成对出现,或者没有出现).

[^"]* 匹配非引号字符.