Vb.net 在visual basic中从逗号分隔的值中提取文本

Vb.net 在visual basic中从逗号分隔的值中提取文本,vb.net,Vb.net,我在文本文件中有这样的数据: 12343,M,Helen Beyer,92149999,21,F,10,F,F,T,T,T,F,F 54326,F,Donna Noble,92148888,19,M,99,T,F,T,F,T,F,T 99999,M,Ed Harrison,92147777,28,F,5,F,F,F,F,F,F,T 88886,F,Amy Pond,92146666,31,M,2,T,F,T,T,T,T,T 37378,F,Martha Jones,92144444,30,M,5

我在文本文件中有这样的数据:

12343,M,Helen Beyer,92149999,21,F,10,F,F,T,T,T,F,F
54326,F,Donna Noble,92148888,19,M,99,T,F,T,F,T,F,T
99999,M,Ed Harrison,92147777,28,F,5,F,F,F,F,F,F,T
88886,F,Amy Pond,92146666,31,M,2,T,F,T,T,T,T,T
37378,F,Martha Jones,92144444,30,M,5,T,F,F,F,T,T,T
22444,M,Tom Scully,92145555,42,F,6,T,T,T,T,T,T,T
81184,F,Sarah Jane Smith,92143333,22,F,5,F,F,F,T,T,T,F
97539,M,Angus Harley,92142222,22,M,9,F,T,F,T,T,T,T
24686,F,Rose Tyler,92142222,22,M,5,F,F,F,T,T,T,F
11113,F,Jo Grant,92142222,22,M,5,F,F,F,T,T,T,F
我想提取名字的首字母和完整的姓氏。因此,输出应该如下所示:

H. Beyer, M
D. Noble, F
E. Harrison, M
问题是我不应该使用字符串拆分函数。相反,我必须使用任何其他字符串处理方式来完成

这是我的代码:

Public Sub btn_IniSurGen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_IniSurGen.Click
    Dim vFileName As String = "C:\temp\members.txt"
    Dim vText As String = String.Empty

    If Not File.Exists(vFileName) Then
        lbl_Output.Text = "The file " & vFileName & " does not exist"
    Else
        Dim rvSR As New IO.StreamReader(vFileName)
        Do While rvSR.Peek <> -1
            vText = rvSR.ReadLine() & vbNewLine
            lbl_Output.Text += vText.Substring(8, 1)
        Loop
        rvSR.Close()
    End If

End Sub
Public Sub btn\u inisumpen\u Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btn\u inisumpen.Click
Dim vFileName为String=“C:\temp\members.txt”
Dim vText As String=String.Empty
如果不存在File.Exists(vFileName),则
lbl_Output.Text=“文件”&vFileName&“不存在”
其他的
作为新IO.StreamReader的Dim rvSR(vFileName)
当rvSR.Peek-1时执行
vText=rvSR.ReadLine()&vbNewLine
lbl_Output.Text+=vText.Substring(8,1)
环
rvSR.Close()
如果结束
端接头
您可以使用。它将解析文件并将结果作为字符串数组直接返回给您

Using MyReader As New Microsoft.VisualBasic.FileIO.
    TextFieldParser("c:\logs\bigfile")

    MyReader.TextFieldType = 
        Microsoft.VisualBasic.FileIO.FieldType.Delimited
    MyReader.Delimiters = New String() {","}
    Dim currentRow As String()
    'Loop through all of the fields in the file.  
    'If any lines are corrupt, report an error and continue parsing.  
    While Not MyReader.EndOfData
        Try
            currentRow = MyReader.ReadFields()
            ' Include code here to handle the row. 
        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
            MsgBox("Line " & ex.Message & 
            " is invalid.  Skipping")
        End Try 
    End While 
End Using

为了你想要的结果,你可以改变

lbl_Output.Text += vText.Substring(8, 1)


但最好有一个以上的lbl\U输出…

类似的东西应该可以工作:

    Dim lines As New List(Of String)
    For Each s As String In File.ReadAllLines("textfile3.txt")
        Dim temp As String = ""
        s = s.Substring(s.IndexOf(","c) + 1)
        temp = ", " + s.First
        s = s.Substring(s.IndexOf(","c) + 1)
        temp = s.First + ". " + s.Substring(s.IndexOf(" "c), s.IndexOf(","c) - s.IndexOf(" "c)) + temp
        lines.Add(temp)
    Next

列表
将包含您需要的字符串。

您的代码有什么问题?
    Dim lines As New List(Of String)
    For Each s As String In File.ReadAllLines("textfile3.txt")
        Dim temp As String = ""
        s = s.Substring(s.IndexOf(","c) + 1)
        temp = ", " + s.First
        s = s.Substring(s.IndexOf(","c) + 1)
        temp = s.First + ". " + s.Substring(s.IndexOf(" "c), s.IndexOf(","c) - s.IndexOf(" "c)) + temp
        lines.Add(temp)
    Next