2016-11-18 49 views
1

我正在加載一個包含名字爲lastName格式的大約1000個名字的.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進行綁定。

相關問題