我正在使用 .NET 的 String.Split 方法使用逗号拆分字符串,但我想忽略用双引号引起来的字符串。我读过一个
例如下面的字符串。
Fruit,10,"Bananas, Oranges, Grapes"
我想得到以下内容
Fruit
10
"Bananas, Oranges, Grapes"
目前我得到以下输出
Fruit
10
"Bananas
Oranges
Grapes"
enter code here
在遵循建议和提供的答案之后,这里是我最终得到的示例。 (这显然对我有用)
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
最佳答案
你最好使用解析器,就像评论中提到的那样。也就是说,可以通过以下方式使用正则表达式来实现:
,(?=(?:[^"]*"[^"]*")*[^"]*$)
正向前看 ((?= ... )
) 确保在逗号之前有偶数个引号来分割(即它们要么成对出现,要么没有).
[^"]*
匹配非引号字符。
关于c# - 拆分字符串并忽略引号内的定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21261314/