1

この .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

そのファイルは次のとおりです: Book Title , Author , Fiction or Nonfiction , Stock , Price

それらを複数の配列に分割する必要があります。少なくとも、そうしているように感じます。これまでのところ

    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次元配列に配置する方法がわかりません。

助けてくれてありがとう。

私はこのような多くのサイトを見てきましたが、彼らが提供する唯一の助けはそれを2つに分割することです. http://patorjk.com/programming/tutorials/vbarrays.htm#splitfunction

4

2 に答える 2

2

形式が常に非常に厳密な場合は、string.Split を使用して手動で行うことができます。それ以外の場合はFileHelpers、この高速 CSV パーサーまたは VB.NET オンボードTextFieldParserクラスなどの既存のライブラリを使用することをお勧めします。

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()、それはすべてメモリにロードされますが( のようにFile.ReadAllLines) File.ReadLines、ファイルから行をストリーミングし、要求した場合にのみ(fe via Take(10))。

編集:最も再利用可能なアプローチが必要な場合は、これらのプロパティを持つカスタム クラスを使用し、string() から初期化します。

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 EachDataSource またはとして使用できます。エラーが発生しやすいことに注意してください。タイトルにはおそらくコンマも含まれているか、形式が常に厳密であるとは限りません。

于 2012-10-29T22:26:54.270 に答える
0

データで何をしたいのかを知らなければ、助けるのは難しい. しかし、本のタイトル、著者、価格などのプロパティを使用して、本のクラスを作成するのが最善の策だと思います。

(本の) リストを作成し、txt ファイルを 1 行ずつ読み取り、各行をカンマで分割し、結果の配列ごとに book インスタンスを作成し、この急いで書かれた例のようにリストに追加します。

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

これがあなたがやりたいことである場合、必要に応じて上記のコードを改善します

于 2012-10-29T22:51:00.440 に答える