【问题标题】:split() function is deleting rest of the string after commasplit() 函数在逗号后删除字符串的其余部分
【发布时间】: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


【解决方案1】:

免责声明:这更像是一个评论而不是一个答案,所以请这样对待

我认为您发布的代码不完整,因为简单的测试不会产生您描述的输出:

    Dim Data As String = "50000007;Bxxxx**,** Kxxx - Sxxx Fx. xxxx;423283; ;423292;1;          ;700000004;T;"
    Dim words As String() = Data.Split(New Char() {";"c})
    For Each word In words
        Debug.WriteLine("word:" & word)
    Next

输出:

word:50000007
word:Bxxxx**,** Kxxx - Sxxx Fx. xxxx
word:423283
word: 
word:423292
word:1
word:          
word:700000004
word:T
word:

【讨论】:

  • 我没有尝试使用字符串,我总是使用 OleDb 从 csv 文件中读取 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Extended Properties='text ;HDR=是;FMT=定界(;)';"连接字符串。也许我在读取 csv 文件时犯了错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 2014-02-11
  • 2020-10-09
  • 1970-01-01
相关资源
最近更新 更多