2016-11-18 6 views
1

firstName:lastName形式で約千の名前を含む.txtファイルをロードしています。私は今何をしているのかのためにファーストネームが必要です。リストボックスに表示されているリスト全体を削除してファーストネームのみを表示するにはどうすればよいですか?各行で.txtファイルを読み込んで区切り文字の後に消去する方法

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    OpenFileDialog1.Title = "Please Select a File" 
    OpenFileDialog1.InitialDirectory = "C:temp" 
    OpenFileDialog1.ShowDialog() 
End Sub 

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk 
    Dim strm As System.IO.Stream 
    strm = OpenFileDialog1.OpenFile() 
    TextBox2.Text = OpenFileDialog1.FileName.ToString() 
    ListBox1.Items.AddRange(System.IO.File.ReadAllLines(TextBox2.Text)) 
End Sub 
+0

データはどの形式ですか?あなたが言ったように、名前や姓はコロンで区切られていますか、スペースで区切られていますか? – GrandMasterFlush

+0

コロンで区切ってスペースを入れないでください。 – Kane31

答えて

1

あなたはサブアレイにそれぞれの行を分割し、区切り文字で離れてそれぞれの行を分割し、返された最初の部分を使用する新しい配列

Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk 
    Dim strm As System.IO.Stream 
    strm = OpenFileDialog1.OpenFile() 
    TextBox2.Text = OpenFileDialog1.FileName.ToString() 
    ListBox1.Items.AddRange(
     System.IO.File.ReadAllLines(TextBox2.Text). 
     Select(Function(l) l.Split(":"c).FirstOrDefault()). 
     ToArray()) 
End Sub 
+1

完全に動作します。このような迅速な対応をありがとうございます。 – Kane31

1

使用String.Splitに最初の要素を返すことができます:

ListBox1.Items.AddRange(
    System.IO.File.ReadLines(TextBox2.Text).Select(
     Function(x) x.Split(":"c)(0) 
    ).ToArray() 
) 

それはもう少し効率的かもしれないので、私は、ReadLines代わりのReadAllLinesを使用しますが、AddRangeが必要のように見えますとにかく、ToArrayコール。

しかし、実際には、リストに項目が含まれていれば、何をしようとしているかによって異なります。フルネーム用のクラスを作成し、それらのファイルのリストにファイルを読み込み、DataSourceDisplayMemberを使用してバインドする方がよい場合があります。

関連する問題