在VB.net中拆分

时间:2015-05-29 07:37:19

标签: vb.net

FASTER,WW0011,"CTR ,REURN,ALT TUBING HELIUM LEAK",DEFAULT test,1,3.81,test

我需要将以下行的结果作为

Arr(0) =faster
Arr(1) =WW0011
Arr(2) =CTR ,REURN,ALT TUBING HELIUM LEAK
Arr(3) =DEFAULT test
Arr(4) =faster
Arr(5) = 1
Arr(6)=3.81
Arr(7) = test

我尝试过使用split,但问题出在Arr上(2) 有谁能请给我一个解决方案

3 个答案:

答案 0 :(得分:4)

你可以使用TextFieldParser类来处理这样的情况。将HasFieldEnclosedInQuotes属性设置为true。以下是MSDN(略有改动)的示例:

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

    MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
    MyReader.Delimiters = New String() {","}

    'Set this to ignore commas in quoted fields.
    MyReader.HasFieldsEnclosedInQuotes = True

    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

答案 1 :(得分:3)

我自己使用这个功能

Private Function splitQuoted(ByVal line As String, ByVal delimeter As Char) As String()
Dim list As New List(Of String)

    Do While line.IndexOf(delimeter) <> -1
        If line.StartsWith("""") Then
            line = line.Substring(1)
            Dim idx As Integer = line.IndexOf("""")
            While line.IndexOf("""", idx) = line.IndexOf("""""", idx)
                idx = line.IndexOf("""""", idx) + 2
            End While
            idx = line.IndexOf("""", idx)
            list.Add(line.Substring(0, idx))
            line = line.Substring(idx + 2)
        Else
            list.Add(line.Substring(0, Math.Max(line.IndexOf(delimeter), 0)))
            line = line.Substring(line.IndexOf(delimeter) + 1)
        End If
    Loop
    list.Add(line)
    Return list.ToArray
End Function

答案 2 :(得分:-1)

使用for循环通过char迭代字符串char!