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.
I found below is the easiest way, we can do it
string fruits = "Fruit,10,"Bananas, Oranges, Grapes"";
string[] fruitsArr = Regex.Split(fruits, ",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
Output:
fruitsArr[0] = "Fruit"
fruitsArr[1] = "10"
fruitsArr[2] = "\"Bananas, Oranges, Grapes\""
If you need pure string data so you can do it something like,
fruitsArr[2].Replace("\"", "")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With