I am using .NET's String.Split method to break up a string using commas, but I want to ignore strings enclosed in double quotes for the string. I have read that a
For example, the string below.
Fruit,10,"Bananas, Oranges, Grapes"
I would like to get the following
Fruit
10
"Bananas, Oranges, Grapes"
Currently I am getting the following output
Fruit
10
"Bananas
Oranges
Grapes"
enter code here
After following suggestions and the answers provided, here is a sample of what I ended up with. (It worked for me obviously)
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
解决方案
You are better off with a parser, like those mentioned in the comments. That said, it's possible to do it with regex in the following way:
,(?=(?:[^"]*"[^"]*")*[^"]*$)
The positive lookahead ((?= ... )) ensures that there is an even number of quotes ahead of the comma to split on (i.e. either they occur in pairs, or there are none).
[^"]* matches non-quote characters.