2016-11-18 91 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进行绑定。

相关问题