LUA Datei öffnen und bestimmte Vars anzeigen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    LUA Datei öffnen und bestimmte Vars anzeigen

    Hey zusammen,

    ich habe eine Frage. Ich habe .lua Datei die sieht so aus

    Quellcode

    1. AmrEquipedItems = {
    2. ["19"] = "|cffffffff|Hitem:65904:0:0:0:0:0:0:0:85:0|h[Wappenrock von Ramkahen]|h|r",
    3. ["1"] = "|cff1eff00|Hitem:65889:0:0:0:0:0:0:0:85:0|h[Kapuze des Splitterfinders]|h|r",
    4. ["14"] = "|cff0070dd|Hitem:55881:0:0:0:0:0:0:0:85:0|h[Ungestümes Ersuchen]|h|r",
    5. ["3"] = "|cff0070dd|Hitem:54502:0:0:0:0:0:0:0:85:0|h[Feuersglutschultern]|h|r",
    6. ["2"] = "|cff0070dd|Hitem:56110:0:0:0:0:0:0:0:85:0|h[Glücksbringer der Muse]|h|r",
    7. ["5"] = "|cff0070dd|Hitem:67106:0:3892:3892:0:0:0:0:85:0|h[Roben der zerbrochenen Träume]|h|r",
    8. ["4"] = "|cffffffff|Hitem:6097:0:0:0:0:0:0:0:85:0|h[Akolythenhemd]|h|r",
    9. ["7"] = "|cff0070dd|Hitem:56218:0:0:0:0:0:0:0:85:0|h[Fluchbelegte Gamaschen]|h|r",
    10. ["6"] = "|cff0070dd|Hitem:66941:0:0:0:0:0:0:0:85:0|h[Dreifachschlaufengürtel]|h|r",
    11. ["9"] = "|cff1eff00|Hitem:63911:0:0:0:0:0:0:0:85:0|h[Myrmidonentöterarmschienen]|h|r",
    12. ["8"] = "|cff1eff00|Hitem:63899:0:0:0:0:0:0:0:85:0|h[Wasserbohrertreter]|h|r",
    13. ["16"] = "|cff0070dd|Hitem:63789:0:0:0:0:0:0:0:85:0|h[Sehr männlicher Stab]|h|r",
    14. ["15"] = "|cff0070dd|Hitem:66883:0:0:0:0:0:0:0:85:0|h[Umhang der Höhenangst]|h|r",
    15. ["13"] = "|cff0070dd|Hitem:56100:0:0:0:0:0:0:0:85:0|h[Rechtes Auge von Rajh]|h|r",
    16. ["12"] = "|cff0070dd|Hitem:55261:0:0:0:0:0:0:0:85:0|h[Ring des Großwals]|h|r",
    17. ["11"] = "|cff0070dd|Hitem:56220:0:0:0:0:0:0:0:85:0|h[Zurückgelassener Dunkeleisenring]|h|r",
    18. ["10"] = "|cff0070dd|Hitem:54492:0:0:0:0:0:0:0:85:0|h[Feuerzwirnhandschuhe]|h|r",
    19. }
    20. AmrGold = 35244600
    21. AmrRealmName = "Frostwing"
    22. AmrCharacterName = "Rexima"


    Wie mache ich das, er mir für jeden Array von AmrEquipedItems mir die Nummern nach "Hitem:" ausgibt?
    Regex wäre wohl möglich. Hier sollte aber splitten passen. Einfach bei | splitten. Jeden Eintrag im Array überprüfen ob er mit Hitem anfängt(nur wenn er nicht immer an der gleichen Stelle sein sollte. Andernfalls nehme einen konstanten Index) und nehm dann von dem Eintrag alles hinter Hitem: mit SubString()
    So kannst du das machen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim GefundeneNummerkombinationen As New List(Of String)
    3. For Each m As System.Text.RegularExpressions.Match In _
    4. System.Text.RegularExpressions.Regex.Matches( _
    5. TextBox1.Text, _
    6. "$.*\|.*|Hitem:(?<Nummern>(.*?))\|")
    7. GefundeneNummerkombinationen.Add(m.Groups("Nummern").Value)
    8. Next
    9. MessageBox.Show(String.Join(Environment.NewLine, GefundeneNummerkombinationen))
    10. End Sub
    @Artentus
    Was soll das Lookahead und Lookbehind an dem Pattern außer der Übersichtlichkeit verbessern? Ich habe den Pattern extra so designt, dass er nur genau diesen Aufbau matcht und nichts anderes.
    @nafets3646
    Der Code wäre dann etwas kürzer:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim GefundeneNummerkombinationen As New List(Of String)
    3. For Each m As System.Text.RegularExpressions.Match In _
    4. System.Text.RegularExpressions.Regex.Matches( _
    5. TextBox1.Text, _
    6. "(?<=$.*\|.*|Hitem:).*?(?=\|)")
    7. GefundeneNummerkombinationen.Add(m.Value)
    8. Next
    9. MessageBox.Show(String.Join(Environment.NewLine, GefundeneNummerkombinationen))
    10. End Sub