【发布时间】:2015-09-02 11:03:21
【问题描述】:
我正在使用拆分功能将数据从 csv 文件添加到数据表 我的弦是这样的
"50000007;Bxxxx Kxxx - Sxxx Fx. xxxx;423283; ;423292;1; ;700000004;T;"
我使用这个代码
x = dt.Rows.Count
For i As Integer = 0 To x - 1
Dim Data As String = dt.Rows(i).Item(0)
Dim words As String() = Data.Split(New Char() {";"c})
bilgi.Rows.Add(words)
Next
它适用于数千行但如果字符串带有逗号 例如
"50000007;Bxxxx**,** Kxxx - Sxxx Fx. xxxx;423283; ;423292;1; ;700000004;T;"
仅拆分我的字符串数组 ("50000007","Bxxxx") 后,其余部分消失并继续下一行。
谁能帮我解决这个问题?
【问题讨论】:
-
如何将 csv 文件加载到数据表中?您使用它的方式,
String.split只会拆分为分号。如果“剩下的没有了,继续下一行”,那么在你进入for循环之前,“剩下的”就已经放在下一行了。 -
Split的工作原理不是。请发布一个完整且最小的示例-即不要涉及数据表。实际上,您可能使用,作为字段分隔符加载 CSV,导致第一列包含前两个字符串而不是整行 -
我用这段代码读取csv文件
Dim sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & yol & _ ";Extended Properties='text;HDR=Yes;FMT=Delimited(;)';" Dim dt As New DataTable() '";Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";" Using adapt As New OleDbDataAdapter("SELECT * FROM [" & dosya & "]", sConn) adapt.Fill(dt) End Using -
@Groo 是的,我喜欢拆分分号。正如我所提到的,它正在工作。但如果分号之间有逗号,则忽略其余数据并继续下一行。 CSV 文件包含近 200 行,其余的都可以
-
@Murat - 您的提供商正在
,拆分。您的代码仅获得由;拆分的before 行的第一部分。该行的其余部分将位于dt.Rows(i).Item(1)(如果有更多,,可能会更多)。
标签: .net vb.net string parsing split