0

我正在尝试在包含以下信息的列表框中打开一个 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。

此外,在其他示例中,我看到很多文件路径使用“..\”缩短了一些目录。它与解决方案在同一个文件夹中,有没有办法缩短它?(另外,为了节省空间,我没有在我粘贴的代码中包含完整的文件路径,它很长......哈哈)

4

1 回答 1

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    

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

于 2013-08-31T22:42:21.647 回答