【问题标题】:Reading comma-separated lines from textbox从文本框中读取逗号分隔的行
【发布时间】:2012-10-09 21:40:52
【问题描述】:

我一直在阅读和阅读大量答案,修改代码,但我仍然无法弄清楚如何解决这个问题。

我有一个文本框,它接收来自 .txt 或 .csv 文件的多行逗号分隔信息。示例:

珍珠港;提康德罗加 CG-45;300;1000
埃弗雷特;提康德罗加 CG-46;310;1200
珍珠港;伯克 DDG-110;215;800

现在将有一个组合框来选择一个港口(在本例中,选项将是珍珠港和埃弗雷特)。选择“Pearl Harbour”后,另一个多行文本框将仅显示以“Pearl Harbour”为第一个元素的行。

现在是我能写的:

Public Sub Readfile()

TextBox1.Text = System.IO.File.ReadAllText("libro1.csv")<br>
Dim lines() As String<br>
lines = Split(TextBox1.Text, vbCrLf)<br>
Dim strline0 As String = lines(0)<br>
Dim strArray0() As String = strline0.Split(";")<br>
Dim strline1 As String = lines(1)<br>
Dim strArray1() As String = strline1.Split(";")<br>
...

End Sub

我发现的第一个问题是,对于 .csv 文件的每一行,我都必须编写两行代码才能拥有一个包含所有信息的数组。但我不能这样做,因为我不知道 .csv 将有多少行。

我有点迷失在这里。我没有要求任何人变魔术并给我一个我可以复制和粘贴的代码,但如果有人能指导我完成这个,我将不胜感激。

【问题讨论】:

    标签: arrays file.readalllines


    【解决方案1】:

    首先,使用List 比使用数组更好。特别是对于字符串集合,它们更容易使用。有了这个,你不能单独命名你的行是正确的,因为你不知道会有多少行。这就是为什么您需要创建一个行列表并遍历它们,例如 ...

    Public Sub Readfile()
        TextBox1.Text = System.IO.File.ReadAllText("libro1.csv")
        Dim lines As List(of String)
        Dim allResults As New List(of List(of String))
    
        lines = Split(TextBox1.Text, vbCrLf)
    
        For Each line In lines
            Dim result As List(Of String) = line.Split(CChar(";"))
            allResults.Add(result)
        Next
    End Sub
    

    这将允许您基本上说,“对于文件中的每一行,将每个分号分隔的部分放入一个名为'result'的列表中。然后将'result'放入另一个名为'的结果列表中所有结果'。”

    看!循环的力量!

    【讨论】:

    • 我宁愿说“看哪!列表的力量!”。我不知道如何使用它们,但现在它们将解决我现在和未来的大部分 vb 问题。非常感谢,布鲁默。
    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多