Blöcke mit bestimmten Werten aus String extrahieren

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Wincrash.

    Blöcke mit bestimmten Werten aus String extrahieren

    Hi, ich habe hier folgendes Problem(chen):

    Ich möchte aus einem 2 kilometer langen String immer solch einen Block extrahieren (siehe Code unten), wenn die Property ["active"] den Wer "1" hat.
    Ein Block sieht immer so aus:

    Quellcode

    1. [28] = { ["UID"] = "landevice6964",
    2. ["_node"] = "landevice27",
    3. ["active"] = "0",
    4. ["auto_wakeup"] = "0",
    5. ["deleteable"] = "2",
    6. ["dhcp"] = "1",
    7. ["ethernet"] = "0",
    8. ["guest"] = "0",
    9. ["ip"] = "192.168.178.48",
    10. ["mac"] = "##:##:##:##:##:##:##:##",
    11. ["manu_name"] = "0",
    12. ["name"] = "iPad 3",
    13. ["online"] = "0",
    14. ["source"] = "0x1004",
    15. ["speed"] = "0",
    16. ["static_dhcp"] = "0",
    17. ["url"] = "",
    18. ["wakeup"] = "0",
    19. ["wlan"] = "0",
    20. ["wlan_UIDs"] = ""
    21. },
    Die Blöcke unterscheiden sich immer durch ihre nummer am Anfang und durch ihre verschiedenen Werte.

    Wisst ihr, wie man das realisieren kann?
    Vielen Dank,
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Das Zauberwort lautet Regex. Noch eine Frage, sieht dein Block immer genauso aus, auch mit den geschwungenen Klammern etc. könntest du vielleicht einfach mal mehrere davon aneinanderhängen, dass man genauer sehen kann, wie das gemeint ist?
    Oh nein - nicht Regex (Ich hasse es, weil ich es am anfang kapiere - und 5 min. später nicht mehr :S )
    Hier sind die blöcke:
    Spoiler anzeigen

    Quellcode

    1. [6] = { ["UID"] = "landevice6952",
    2. ["_node"] = "landevice5",
    3. ["active"] = "0",
    4. ["auto_wakeup"] = "0",
    5. ["deleteable"] = "2",
    6. ["dhcp"] = "1",
    7. ["ethernet"] = "0",
    8. ["guest"] = "0",
    9. ["ip"] = "192.168.178.31",
    10. ["mac"] = "##:##:##:##:##:##",
    11. ["manu_name"] = "0",
    12. ["name"] = "######",
    13. ["online"] = "0",
    14. ["source"] = "0x1004",
    15. ["speed"] = "0",
    16. ["static_dhcp"] = "0",
    17. ["url"] = "",
    18. ["wakeup"] = "0",
    19. ["wlan"] = "0",
    20. ["wlan_UIDs"] = ""
    21. },
    22. [7] = {
    23. ["UID"] = "landevice6962",
    24. ["_node"] = "landevice6",
    25. ["active"] = "0",
    26. ["auto_wakeup"] = "0",
    27. ["deleteable"] = "2",
    28. ["dhcp"] = "1",
    29. ["ethernet"] = "0",
    30. ["guest"] = "0",
    31. ["ip"] = "192.168.178.46",
    32. ["mac"] = "##:##:##:##:##:##",
    33. ["manu_name"] = "0",
    34. ["name"] = "######",
    35. ["online"] = "1",
    36. ["source"] = "0x1004",
    37. ["speed"] = "0",
    38. ["static_dhcp"] = "0",
    39. ["url"] = "",
    40. ["wakeup"] = "0",
    41. ["wlan"] = "0",
    42. ["wlan_UIDs"] = ""
    43. },
    44. [8] = {
    45. ["UID"] = "landevice6958",
    46. ["_node"] = "landevice7",
    47. ["active"] = "0",
    48. ["auto_wakeup"] = "0",
    49. ["deleteable"] = "2",
    50. ["dhcp"] = "1",
    51. ["ethernet"] = "1",
    52. ["guest"] = "0",
    53. ["ip"] = "192.168.178.40",
    54. ["mac"] = "##:##:##:##:##:##",
    55. ["manu_name"] = "0",
    56. ["name"] = "######",
    57. ["online"] = "0",
    58. ["source"] = "0x1004",
    59. ["speed"] = "1000",
    60. ["static_dhcp"] = "0",
    61. ["url"] = "",
    62. ["wakeup"] = "0",
    63. ["wlan"] = "0",
    64. ["wlan_UIDs"] = ""
    65. },
    Die Mac-Adresse und den Namen habe ich durch "#" ersetzt - das im Originalcode nicht so :D
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.
    Also ich muss über 60 Blöcke auf "[active] = 1" überprüfen bzw. einlesen. Ich schau mir grad die Tutorials an - mal sehen, ob ich es verstehe:D

    Edit: Ich hab's so teilweise verstanden. Den Lösungsansatz von Eierlein finde ich zwar verständlicher - ich schaue aber, ob ich nicht noch was mit RegEx basteln kann...
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Wincrash“ ()

    Ein kleiner Ansatz hier mal:

    Quellcode

    1. Gesamter Block:
    2. von: Zeilenanfang + Eckige Klammer auf + <Nummer> + Eckige Klammer zu + Leerzeichen + Gleichzeichen + Leerzeichen + Geschwungene Klammer auf
    3. bis: Zeilenanfang + Geschwungene Klammer zu
    4. Einzelner Wert:
    5. Zeilenanfang + Eckige Klammer auf + Anführungszeichen + <Name> + Anführungszeichen + Eckige Klammer zu + Leerzeichen + Gleichzeichen + Leerzeichen + Anführungszeichen + <Wert> + Anführungszeichen
    Ok ich werde mich mal dransetzten und versuchen was zu machen.
    @Rinecamo: Was genau meinst du mit "Wie oft muss ich das einlesen?" ?
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.