如何拆分忽略值是否包含在双引号中的逗号 [英] How to split comma which ignores if the value is enclose to double quotes

查看:24
本文介绍了如何拆分忽略值是否包含在双引号中的逗号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何分割逗号,如果值被双引号括起来则忽略.

How to split comma which ignores if the value is enclose to double quotes.

可用数据:

3545,Albert,"Mathias Albert、Lars-Erik Cederman 和 Alexander Wendt(eds)",2010

3545,Albert,"Mathias Albert, Lars-Erik Cederman and Alexander Wendt (eds)",2010

应该拆分成一个数组:

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

推荐答案

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

While using the ADO Text Driver would probably be the best way in the long run, you can use a specific/custom RegExp for a quick & dirty 'use just once' script:

>> 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 需要进一步调整.

To cope with empty fields, the .Pattern needs some further fiddling.

如果你更喜欢Split(),像这样:

If you prefer Split(), something like this:

>> 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
>>

应该让你开始.

这篇关于如何拆分忽略值是否包含在双引号中的逗号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆