Vbscript 如果值用双引号括起来,如何拆分忽略的逗号

Vbscript 如果值用双引号括起来,如何拆分忽略的逗号,vbscript,Vbscript,如何拆分逗号,忽略值是否用双引号括起来 现有数据: 3545,阿尔伯特,“马蒂亚斯·阿尔伯特,拉尔斯·埃里克·塞德曼和亚历山大·温特 (eds)”,2010年 应在阵列中拆分: arr(0) = "3545" arr(1) = "Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)" arr(2) = "2010" 虽然从长远来看,使用ADO文本驱动程序可能是最好的方法,但您可以使用特定/自定义的RegExp来创建一个快速且脏

如何拆分逗号,忽略值是否用双引号括起来

现有数据:

3545,阿尔伯特,“马蒂亚斯·阿尔伯特,拉尔斯·埃里克·塞德曼和亚历山大·温特 (eds)”,2010年

应在阵列中拆分:

arr(0) = "3545"
arr(1) = "Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)"
arr(2) = "2010"

虽然从长远来看,使用ADO文本驱动程序可能是最好的方法,但您可以使用特定/自定义的RegExp来创建一个快速且脏的“只使用一次”脚本:

>> Set r = New RegExp
>> r.Pattern = "^([^,]+),([^,]+),""([^""]+)"",(.+)$"
>> s = "3545,Albert,""Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)"",2010"
>> Set m = r.Execute(s)
>> ReDim a(3)
>> For i = 0 To UBound(a)
>>     a(i) = m(0).SubMatches(i)
>> Next
>> WScript.Echo Join(a, vbCrLf)
>>
3545
Albert
Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)
2010
>>
为了处理空字段,需要进一步修改.Pattern

如果您更喜欢
Split()
,请执行以下操作:

>> s = "3545,Albert,""Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)"",2010"
>> ReDim a(3)
>> q = Split(s, """")
>> WScript.Echo Join(q, vbCrLf)
>>
3545,Albert,
Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)
,2010
>> c = Split(q(0), ",")
>> WScript.Echo Join(c, vbCrLf)
>>
3545
Albert

>> a(0) = c(0)
>> a(1) = c(1)
>> a(2) = q(1)
>> a(3) = Mid(q(2), 2)
>> WScript.Echo Join(a, vbCrLf)
>>
3545
Albert
Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)
2010
>>
你应该开始了