Quelltext nach unterschiedlichen Sachen auslesen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Quelltext nach unterschiedlichen Sachen auslesen

    Hallo,
    Ich möchte ein Programm programmieren welches den Quelltext ausliest, aber nicht immer nach den gleichen Sachen sondern nach unterschiedlichen.
    z.B : Name: Max Mustermann es könnte sich natürlich auch ändern auf Peter Mustermann.
    Wie kann ich das machen?
    Nach bestimmten Zeilen den Quelltext auslesen?

    Mfg :)

    * Topic verschoben *

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

    Keine Ahnung was du von uns willst... aber ein Ansatz wäre hier mMn sogenannte Suchmasken, welche sich mit RegEx realisieren lassen...

    VB.NET-Quellcode

    1. Dim einEntsprechenderRegExString As String = "Name:{1}\s{1}(\w{1,50})\s(\w{1,50})"


    Dort hast du folgendes: Es wird nach "Name: " gesucht (mit Leerzeichen hintendran), dann nach Alphanumerischen Zeichen sowie "_", dann ein Leerzeichen und wieder Alphanumerische Zeichen mit "_". Dabei dürfen die Alphanumerischen Zeichenfolgen auf mindestens 1 und maximal 50 Zeichen beschränkt. Diese sind mit () gruppiert, wie du auf die einzeln zugreifst, müsstest du herausfinden. (Die erste gruppe wäre dann der Vorname, die zweite dann der Nachname).

    Da sie Gruppiert sind, kannst du sie einfach ersetzen, String.Replace könnte evtl. sogar funktionieren.

    So, nach diesem Muster, kannst du verschiedene Sachen suchen und ersetzen, regEx ist aber ein eher kompliziertes Thema, was die Syntax bzw. das zusammenbauen der Suchmasken geht.

    Du kannst Suchmasken direkt online testen:

    RegEx testen
    Gebe dort in das obere Feld den regEx ein (ohne "") und unten deinen Test-text. Gelb markiertes hat er gefunden, blau markiertes hat er gefunden, wird aber nicht berücksichtigt.
    Wäre der Text bspw.: "Name: Name: Max Mustermann", so würde das erste "Name: " geb, dass zweite "Name: " blau, da ich mit "{1}" sage, dass es nur einmal vorkommen darf.

    lg. Kagu

    Edit: Nun verstanden was du willst... aber ja, RegEx sucht nach gewissen mustern, der gegebene findet die Zeilen die Name: Blubb Bla lauten.

    folgender akzeptiert Doppelnamen mit Doppelnachnamen und Bindestrichen im Namen ( Vor und Zuname werden hier mit einem Doppelpunkt getrennt):

    Quellcode

    1. (Name:\s){1}([\w\s-]{1,100}):([\w\s-]{1,100})

    String:

    VB.NET-Quellcode

    1. "Name: Max-Martin : Beethooven-Meier"

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

    Ich gehe mal davon aus, dass Du den Quelltext, nicht aber Kommentare auslesen willst.
    VB ist zeilenorientiert, lies mit

    VB.NET-Quellcode

    1. Dim AllLines() As String = System.IO.File.ReadAllLines(DEINE_DATEI)
    Deinen Quelltext ein.
    Wende auf TrfimLeft() einer Zeile folgendes an:
    Ignoriere alle Zeilen, die mit "'" oder "REM " beginnen (Kommentarzeilen)
    wenn Du Strings findest, gehe zum End-" und mach da weiter.
    wenn Du Kommentarzeichen findest, schneide ab da alles weg
    ein " _" am Ende einer Nicht-Kommentar-Zeile hängt die nächste Zeile ran
    usw.
    Nun solltest Du eine einzelne VB-Quellzeile halten, und auf die kannst Du anwenden, was @Kagurame gepostet hat.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!