使用Split在VB的列表框中打开txt文件

时间:2013-08-31 22:17:54

标签: vb.net listbox split text-files streamreader

我正在尝试在包含以下信息的列表框中打开txt文件:

11111\George Baker\825.50
22222\Jane Doe\563.75

我正在尝试使用split方法,因此数据在显示时会被拆分。

我已经知道在列表框中显示数据的方式与文本文件中的数据完全相同,但我无法正确分割并显示我想要的信息:

Number: 11111  Name: George Baker  Balance: 825.50
Number: 22222  Name: Jane Doe  Balance 563.75

这是我到目前为止的代码:

Public Function GetData() As Boolean

    Dim streamer As StreamReader = Nothing
    LastError = String.Empty
    Dim fields() As String

    Try
        streamer = OpenText("C:\----accounts.txt")
        While Not streamer.EndOfStream
            Dim line As String = streamer.ReadLine()
            fields = line.Split("\"c)
            number = fields(0)
            name = fields(1)
            balance = fields(2)
        End While
        lstAccounts.Items.Add("Number: " & fields(0).Trim() &
                                         "Name: " & fields(1).Trim() &
                                        "Balance: $" & fields(2).Trim())
        LastError = "File not found"
        Return False
    Catch ex As Exception
        LastError = ex.Message
        Return False
    Finally
        If streamer IsNot Nothing Then streamer.Close()
    End Try

    Return False

End Function

这就是我改变它的原因。

它位于帐户类中。我希望它在加载表单时加载到列表框中。

我已经导入了System.IO和System.IO.File。

另外,在其他示例中,我看到很多文件路径使用'.. \'缩短了一些目录。它与解决方案位于同一文件夹中,无论如何都要缩短它? (另外,我在上面粘贴的代码中没有包含完整的文件路径以节省空间,它很长...大声笑)

1 个答案:

答案 0 :(得分:1)

您必须编写所需的字符串并附加fields数组的相应位置(从零开始)。这里有一个示例代码:

  While Not streamer.EndOfStream
      Dim line As String = streamer.ReadLine()
      If (line IsNot Nothing) Then
         Dim fields() As String = line.Split("\"c)
         If (fields.Length = 3) Then
            lstAccounts.Items.Add("Number: " & fields(0).Trim() & "Name: " & fields(1).Trim() & "Balance: " & fields(2).Trim())
        End If
     End If
 End While    

关于路径,如果它与可执行文件位于同一文件夹中,则可能依赖于相对路径(例如,如果它位于同一文件夹中,文件名;如果它位于文件夹内,则此文件夹\文件名等) ;虽然这可能在某些情况下引发问题(依赖绝对路径总是更安全)。另一种选择是从.NET属性获取应用程序的目录(例如,Environment.CurrentDirectory)。