String Between Methode?

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Onion.

    String Between Methode?

    Hallo,

    ich brauche (erneut) eure Hilfe. Ich suche jetzt schon eine gewisse Zeit eine Methode, um einen Teil aus einer Zeile auszulesen.

    Die Zeile sieht folgendermaßen aus:

    <span><ahref="/de/player/2331365896"title="Spielerprofil">NameDenIchAuslesenMöchte</a></span>

    Ich könnte jetzt einfach folgendes machen:

    VB.NET-Quellcode

    1. Label1.Text = Label1.Text.Replace("<span><a href=", "") usw.. bis ich alles replaced habe.


    Allerdings ändert sich folgende Zahl immer:

    "/de/player/2331365896" <====

    Das Programm ist nicht nur für mich, ich möchte es für die Allgemeinheit machen und darum ändert sich diese Zahl immer. Ich kann sie also nicht einfach replacen, da sie ja nicht immer gleich ist.

    Ich bräuchte also einen Befehl, damit ich zwischen dem > und dem </a></span> das hier NameDenIchAuslesenMöchte auslesen kann.

    Ich hoffe ihr versteht was ich meine. Mit RegEx habe ich es schon versucht, bin aber nicht weit gekommen.

    Grüße
    Wegen den " hatte ich Probleme, hab den string mal aufgeteilt.
    Probier mal, vielleicht hilfts Dir.

    VB.NET-Quellcode

    1. Dim arr_Eintrag() As String
    2. Dim Zeile As String = "<span><ahref=" & "/de/player/2331365896" & "title=" & "Spielerprofil" & ">NameDenIchAuslesenMöchte</a></span>"
    3. arr_Eintrag = Split(Zeile, ">", -1, CompareMethod.Text)
    4. For i = 0 To arr_Eintrag.Length - 1
    5. MessageBox.Show(i & ": " & arr_Eintrag(i))
    6. Next
    7. arr_Eintrag(2) = arr_Eintrag(2).Replace("</a", "")
    8. MessageBox.Show(arr_Eintrag(2))
    Hier die elegante Lösung (und ganz elegant in C# :P)

    Quellcode

    1. Regex r = new Regex(@"\<a href=""/de/player/(\d)+"" title=""Spielerprofil"">(?<Name>([^<]+))\<\/a\>");
    2. MessageBox.Show(r.Match(richTextBox1.Text).Groups["Name"].Value.ToString());

    Rinecamo schrieb:


    Hier die elegante Lösung (und ganz elegant in C# :P)

    Quellcode

    1. Regex r = new Regex(@"\(?([^<]+))\<\/a\>");
    2. MessageBox.Show(r.Match(richTextBox1.Text).Groups["Name"].Value.ToString());




    OnkelR schrieb:


    Wegen den " hatte ich Probleme, hab den string mal aufgeteilt.
    Probier mal, vielleicht hilfts Dir.

    VB.NET-Quellcode

    1. Dim arr_Eintrag() As String
    2. Dim Zeile As String = "NameDenIchAuslesenMöchte"
    3. arr_Eintrag = Split(Zeile, ">", -1, CompareMethod.Text)
    4. For i = 0 To arr_Eintrag.Length - 1
    5. MessageBox.Show(i & ": " & arr_Eintrag(i))
    6. Next
    7. arr_Eintrag(2) = arr_Eintrag(2).Replace("</A", ??)
    8. MessageBox.Show(arr_Eintrag(2))




    Hat beides leider nicht funktioniert. Das Problem ist, ich kann die Zeile nicht vorher als String definieren, weil sie immer anders ist. "NameDenIchAuslesenMöchte" ist immer ein anderer Name, von daher macht das wenig Sinn. Sorry, habe ich vergessen zu erwähnen.
    Trotzdem danke für eure Vorschläge.
    Ist doch klar das es nicht funkitoniert wenn du meinen Pattern veränderst.
    Habs doch eben getestet, wenns nicht funktioniert hätte, hätt ichs doch gar nicht erst gepostet.

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

    OnkelR schrieb:

    Und meine "Dim Zeile As String = "NameDenIchAuslesenMöchte" auch!!!
    Ganz ruhig, ich muss es halt erst verstehen. ^^

    Rinecamo schrieb:

    Ist doch klar das es nicht funkitoniert wenn du meinen Pattern veränderst.
    Habs doch eben getestet, wenns nicht funktioniert hätte, hätt ichs doch gar nicht erst gepostet.

    Ich habe dein Pattern aber nicht verändert, ich habe es in VB.Net übersetzen lassen. Die MsgBox bleibt bei mir leer. Ich denke es wäre hilfreich, wenn ich euch meinen Code zeige.

    VB.NET-Quellcode

    1. Using textdatei As StreamReader = New StreamReader("C:\Users\" & Environment.UserName & "\blabla.txt", 1)
    2. Dim i As Integer = 0
    3. Dim zeile As String = 0For i = 1 To 1
    4. zeile = textdatei.ReadLine
    5. Next
    6. Label5.Text = zeileEnd Using

    So kriege ich die besagte Zeile ausgelesen. Den Seitenquelltext habe ich zuvor in eine Textdatei kopiert, deswegen lasse ich mir die bestimmte Zeile auslesen. Vermutlich funktioniert dein Code auch, aber ich baue ihn falsch ein.
    Wäre jemand so freundlich mir zu zeigen, wie ich den Code richtig einbaue? Ich habe es so gemacht:

    VB.NET-Quellcode

    1. Using textdatei As StreamReader = New StreamReader("C:\Users\" & Environment.UserName & "\blabla.txt", 1)
    2. Dim i As Integer = 0
    3. Dim zeile As String = 0For i = 1 To 1
    4. zeile = textdatei.ReadLine
    5. Next
    6. Label5.Text = zeile
    7. Dim r As New Regex("\(?([^<]+))\<\/a\>")
    8. MessageBox.Show(r.Match(Label5.Text).Groups("Name").Value.ToString())
    9. End Using

    Das kann ja so nicht funktionieren. :whistling:

    Ich habe jetzt erstmal den String soweit replaced, dass ich nurnoch die 2 Sachen drin habe.

    10-stellige Zahl und den Namen.

    0123456789 NameDenIchAuslesenMöchte

    Kann ich damit jetzt vieleicht etwas machen? Die Zahl muss weg. Diese ist aber immer verschieden.


    Grüße

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Onion“ ()