在visual basic listbox中显示特定的csv字段信息

时间:2014-10-17 18:48:45

标签: vb.net

我有一个2列的csv文件: 11111,0001.jpg 22222,0002.jpg 33333,0003.jpg

我正在visual studio 2013中构建一个visual basic windows窗体应用程序。该应用程序将在一侧有一个文本框和浏览按钮。文本框显示使用浏览按钮选择的文件位置。在应用程序的另一侧是两个列表框。我有listbox1显示我的csv文件的第一列。我想第二个列表框,listbox2,只显示我的csv文件的第二列中的最后4个字符。到目前为止,这是我的代码。我不知道如何选择字段中的某些字符。

Public Class Form1
Dim streamer As IO.StreamReader

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ListBox1.Items.Clear()
    ListBox2.Items.Clear()
    Dim ofd1 As New OpenFileDialog
    If ofd1.ShowDialog() = Windows.Forms.DialogResult.OK Then
        TextBox1.Text = ofd1.FileName
    End If
    streamer = IO.File.OpenText(ofd1.FileName)
    Label3.Text = IO.File.ReadAllLines(ofd1.FileName).Length
    Dim MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(ofd1.FileName)
    MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
    MyReader.Delimiters = New String() {","}
    Dim currentRow As String()
    While Not MyReader.EndOfData
        Try
            currentRow = MyReader.ReadFields()
            ListBox1.Items.Add(currentRow(0))
            ListBox2.Items.Add(currentRow(1))
        Catch ex As Exception

        End Try
    End While



End Sub

1 个答案:

答案 0 :(得分:0)

只需使用string.Substring和string.Length

的组合
ListBox2.Items.Add(currentRow(1).Substring(currentRow(1).Length - 4))

以扩展形式进行相同的操作并对长度值进行一些检查

Dim startPos = currentRow(1).Length - 4
If startPos < 0 Then
    startPos = 0
End If
Dim last4CharString = currentRow(1).Substring(startPos)
ListBox2.Items.Add(last4CharString)

顺便说一句,我想你可以删除这些行 (您只是为了发现存在的行读取整个文件,然后使用TextFieldParser再次读取它)

streamer = IO.File.OpenText(ofd1.FileName)
Label3.Text = IO.File.ReadAllLines(ofd1.FileName).Length

而是在TextFieldParser循环中使用lineCounter并在每个循环中递增它 然后将最终值设置为Label文本。

Dim lineCounter = 0
While Not MyReader.EndOfData
    ....
    lineCounter +=1
End While
Label3.Text = lineCounter.ToString