Csv 用双引号替换字符串中的逗号(,)

Csv 用双引号替换字符串中的逗号(,),csv,vbscript,Csv,Vbscript,我正在导入一个csv文件,该文件包含逗号作为双引号中字符串的一部分,如下所示: a,b,c,d,e,f a,"b,c,d,e",f 在上面的代码中,我也尝试将分隔符更改为tab,但这对我来说不是强制性的。我想我把正则表达式搞砸了。Adelegate.CSV每行的列数(和列标题)相同。因此,您的示例数据应该是: "C1","C2","C3","C4","C5","C6" a,b,c,d,e,f a,"b1,b2,b3",c,d,"e1,e2,e3,e4",f 用于处理.CSV的体面的工具自动处理

我正在导入一个csv文件,该文件包含逗号作为双引号中字符串的一部分,如下所示:

a,b,c,d,e,f a,"b,c,d,e",f
在上面的代码中,我也尝试将分隔符更改为tab,但这对我来说不是强制性的。我想我把正则表达式搞砸了。

Adelegate.CSV每行的列数(和列标题)相同。因此,您的示例数据应该是:

"C1","C2","C3","C4","C5","C6"
a,b,c,d,e,f
a,"b1,b2,b3",c,d,"e1,e2,e3,e4",f
用于处理.CSV的体面的工具自动处理特殊情况(如引用字段中的分隔符):

Option Explicit

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim sDDir : sDDir = goFS.GetParentFolderName(WScript.ScriptFullName)
Dim oCN : Set oCN = CreateObject("ADODB.Connection")
Dim sCS : sCS = Join(Array( _
     "Driver=Microsoft Access Text Driver (*.txt, *.csv)" _
   , "DBQ=" & sDDir _
   , "Extensions=asc,csv,tab,txt" _
), ";")
Dim oRS

WScript.Echo "sCS:", sCS
oCN.Open sCS
Set oRS = oCN.Execute("SELECT * FROM [44187292.csv]")
WScript.Echo oRS.GetString(2, , vbCrLf, vbCrLf & "----------" & vbCrLf, "<null>")
oCN.close

堆栈溢出不是代码编写服务。自己努力解决这个问题。如果遇到困难,您可以解释您遇到的问题,包括代码的相关部分,并询问有关该代码的特定问题,我们将尽力提供帮助。祝你好运。使用
Split(输入,“,”)
解析csv数据让我很难过。这只是众多案例中的一个边缘案例。寻找一个专用的、专门构建的csv解析器而不是
Split()
,这个问题突然消失了。@KenWhite,我用我尝试过的代码更新了主题。@JoelCoehoorn,我认为Split可以像分隔符一样将行拆分为列,但不确定它是否适用于此目的。Split()有时也适用于此,但这是一个非常糟糕的方法。Csv数据可能会有比您想象的更多的角落案例,这在Split()中是不起作用的
"C1","C2","C3","C4","C5","C6"
a,b,c,d,e,f
a,"b1,b2,b3",c,d,"e1,e2,e3,e4",f
Option Explicit

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")
Dim sDDir : sDDir = goFS.GetParentFolderName(WScript.ScriptFullName)
Dim oCN : Set oCN = CreateObject("ADODB.Connection")
Dim sCS : sCS = Join(Array( _
     "Driver=Microsoft Access Text Driver (*.txt, *.csv)" _
   , "DBQ=" & sDDir _
   , "Extensions=asc,csv,tab,txt" _
), ";")
Dim oRS

WScript.Echo "sCS:", sCS
oCN.Open sCS
Set oRS = oCN.Execute("SELECT * FROM [44187292.csv]")
WScript.Echo oRS.GetString(2, , vbCrLf, vbCrLf & "----------" & vbCrLf, "<null>")
oCN.close
cscript 44187292.vbs
sCS: Driver=Microsoft Access Text Driver (*.txt, *.csv);DBQ=e:\work\proj\soa\tmp;Extensions=asc,csv,tab,txt
a
b
c
d
e
f
----------
a
b1,b2,b3
c
d
e1,e2,e3,e4
f
----------