none
String.Split RRS feed

  • Frage

  • Hallo zusammen,

    ich müsste wieder mal einen String aufteilen. Der String sieht so aus: (Ist insgesamt natürlich viel länger.)

    <tr>  <td>Nachname, Vorname</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr> <tr>  <td>Nachname2, Vorname2</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr>


    Mit

    Dim v = strBody.Split({"<tr>"}, StringSplitOptions.RemoveEmptyEntries).Select(Function(x) x.Split({"</tr>"}, StringSplitOptions.RemoveEmptyEntries))

    komme ich schon mal an diesen Teil:

    <td>Nachname, Vorname</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>

    Jetzt könnte ich natürlich mit Instr arbeiten um an die Werte zwischen <td> und </td> zu kommen. Ich könnte mir aber vorstellen, es gibt eine bessere und vor allem, eine einfachere Methode. Den zweiten Teil, der mit dem Volumen, da würde mit der Wert zwischen den Klammern () vollkommen ausreichen. Kann mir jemand auf die Sprünge helfen?

    Vielen Dank schon im Voraus.


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren


    Donnerstag, 23. April 2015 14:24

Antworten

  • Hallo Winfried,

    Du kannst beim Split mehr als eine Separator angeben und so nicht nur nach Tabelle (tr), sondern auch nach Zelle (td) und den jeweiligen End-Tags aufteilen,so bekommst Du gleich nur die Zelleninhalte:

    Module Module1
    
        Sub Main()
            Dim strBody = "<tr>  <td>Nachname, Vorname</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr> " & _
                          "<tr> <td>Nachname2, Vorname2</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr>"
    
            Dim v = strBody.Split({"<tr>", "</tr>", "<td>", "</td>"}, StringSplitOptions.RemoveEmptyEntries)
    
            For Each vPart In v
                If Not String.IsNullOrEmpty(vPart.Trim()) Then
                    Console.WriteLine(vPart)
                End If
            Next
    
            Console.ReadKey()
    
        End Sub
    
    End Module

    Ergebnis:


    Olaf Helper

    [ Blog] [ Xing] [ MVP]



    Donnerstag, 23. April 2015 14:56

Alle Antworten

  • Hallo Winfried,

    Du kannst beim Split mehr als eine Separator angeben und so nicht nur nach Tabelle (tr), sondern auch nach Zelle (td) und den jeweiligen End-Tags aufteilen,so bekommst Du gleich nur die Zelleninhalte:

    Module Module1
    
        Sub Main()
            Dim strBody = "<tr>  <td>Nachname, Vorname</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr> " & _
                          "<tr> <td>Nachname2, Vorname2</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr>"
    
            Dim v = strBody.Split({"<tr>", "</tr>", "<td>", "</td>"}, StringSplitOptions.RemoveEmptyEntries)
    
            For Each vPart In v
                If Not String.IsNullOrEmpty(vPart.Trim()) Then
                    Console.WriteLine(vPart)
                End If
            Next
    
            Console.ReadKey()
    
        End Sub
    
    End Module

    Ergebnis:


    Olaf Helper

    [ Blog] [ Xing] [ MVP]



    Donnerstag, 23. April 2015 14:56
  • Du kannst beim Split mehr als eine Separator angeben und so nicht nur nach Tabelle (tr), sondern auch nach Zelle (td) und den jeweiligen End-Tags aufteilen,so bekommst Du gleich nur die Zelleninhalte:

    Module Module1
    
        Sub Main()
            Dim strBody = "<tr>  <td>Nachname, Vorname</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr> " & _
                          "<tr> <td>Nachname2, Vorname2</td>  <td>4.849 GB (5,206,469,133 bytes)</td>  <td>21945</td>  </tr>"
    
            Dim v = strBody.Split({"<tr>", "</tr>", "<td>", "</td>"}, StringSplitOptions.RemoveEmptyEntries)
    
            For Each vPart In v
                If Not String.IsNullOrEmpty(vPart.Trim()) Then
                    Console.WriteLine(vPart)
                End If
            Next
    
            Console.ReadKey()
    
        End Sub
    
    End Module

    Ergebnis:

    Hallo Olaf,

    vielen Dank für die Unterstützung, funktioniert wie benötigt. ;)


    Servus
    Winfried

    Gruppenrichtlinien
    HowTos zum WSUS Package Publisher
    WSUS Package Publisher
    HowTos zum Local Update Publisher
    NNTP-Bridge für MS-Foren

    Freitag, 24. April 2015 07:37