我得到了这个.txt文件。
Left Behind,Lahaye,F,7,11.25
A Tale of Two Cities,Dickens,F,100,8.24
Hang a Thousand Trees with Ribbons,Rinaldi,F,30,16.79
该文件是: 书名,作者,小说或非小说,股票,价格
我需要把它们分成多个数组,至少我觉得我这样做了,到目前为止我有这个
Private Sub frmInventory_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Populate array
Dim temp() As String = IO.File.ReadAllLines("Books.txt")
temp = Split(",")
lstBooks.DataSource = temp.ToList
End Sub
这显然没有做到这一点......
我只是不知道如何将它放入多个数组中,例如书籍等,或者可能是二维数组。
感谢您的帮助。
我看过很多这样的网站,但他们提供的唯一帮助就是把它分成2个。 http://patorjk.com/programming/tutorials/vbarrays.htm#splitfunction
答案 0 :(得分:2)
如果格式总是那么严格,你可以用string.Split手动完成,否则我建议使用现有的库,如FileHelpers
,这个fast CSV parser或板载的VB.NET { {3}}上课。
要回答您的实际问题,您可以使用File.ReadLines
和IEnumerable(Of String())
。
Dim lines As IEnumerable(Of String()) =
From line In IO.File.ReadLines("Books.txt")
Select line.Split(","c)
如果你想要一个数组:lines.ToArray()
,它会将所有内容加载到内存中(如TextFieldParser
),而File.ReadLines
会从文件中流出这些行,并且只有在你要求的情况下(fe {via} Take(10)
)。
编辑:如果您想要最可重用的方法,请使用具有这些属性的自定义类,并从字符串()初始化它:
Public Class Book
Public Property Title As String
Public Property Author As String
' and so on '
End Class
Dim books = From line In System.IO.File.ReadLines("Books.txt")
Let parts = line.Split(","c)
Select New Book() With {
.Title = parts(0),
.Author = parts(1)
}
您可以在For Each
或DataSource中使用它。请注意,它容易出错,标题可能也包含逗号或格式并不总是严格。
答案 1 :(得分:0)
在不知道您想要对数据做什么的情况下,很难提供帮助。 但我想你最好的选择是创建一个书类,其中包含书名,作者,价格等属性。
创建一个列表(书籍),逐行读取txt文件,在逗号上分割每一行,并为每个结果数组创建一个书籍实例,并将其添加到列表中,就像这个匆匆写成的例子:
Public Class book
Property title As String
Property author As String
Property price As Double
Public Sub New(ByVal title As String, ByVal author As String, ByVal price As Double)
_title = title
_author = author
_price = price
End Sub
End Class
Public Class Form1
Public booklist As List(Of book)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bookfile As String() = IO.File.ReadAllLines("c:\file.txt")
For Each line As String In bookfile
Dim bookinfo As String() = line.Split(",")
Dim abook As New book(bookinfo(0), bookinfo(1), bookinfo(2))
booklist.Add(abook)
Next
End Sub
End Class
如果您希望这样做,我会根据需要改进上述代码