Benutzer mit den meisten Antworten
String.Split

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- Bearbeitet Winfried.Sonntag Donnerstag, 23. April 2015 14:25
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]
- Bearbeitet Olaf HelperMVP Donnerstag, 23. April 2015 15:56
- Als Antwort vorgeschlagen Holger M. Rößler Donnerstag, 23. April 2015 20:12
- Als Antwort markiert Winfried.Sonntag Freitag, 24. April 2015 07:36
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]
- Bearbeitet Olaf HelperMVP Donnerstag, 23. April 2015 15:56
- Als Antwort vorgeschlagen Holger M. Rößler Donnerstag, 23. April 2015 20:12
- Als Antwort markiert Winfried.Sonntag Freitag, 24. April 2015 07:36
-
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