Mehrere Contains-Abfragen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Cr4ckY.

    Mehrere Contains-Abfragen

    Hallo, ich habe da ein Problem bzw. eine Frage. Also es geht um die Contains()-Funktion. Ich habe eine TextBox, die eine Art Suchfunktion darstellen soll (sagen wir mal es gibt insgesammt nur 2 Ergebnisse). Es soll eine URL sein und die 2 Ergebnisse sind z.B. nun "http://www.test.de" und "http://www.blubb.net". Jetzt will ich halt das jeweilige Ergebnis anzeigen, wenn man in der TextBox eingibt: "test" oder "test.de", "www.test.de" "www test de" "http test de" "http://test.de/" "http://www test.de/" usw. und dann das gleiche mit "blubb". Um das zu schaffen müsste ich aber tausende Abfragen erstellen deshalb wollte ich mal fragen, ob es auch einfacher/kürzer geht?
    Kleiner Regex-Code, der wirklich alles, was auch nur ein bisschen nach URL aussieht, findet:

    Quellcode

    1. [-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?

    Quelle: http://gskinner.com/RegExr/

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    Erstmal vielen Danke für deine Antwort!
    Aber eine Frage: also ich hab mich noch nie mit RegEx befasst, jedoch hab ich grad ein wenig im Internet geschaut und hab nun folgenden Code:

    VB.NET-Quellcode

    1. 'Button_Click
    2. Dim url As String = "http://www.test.de/"
    3. Dim rx As New Regex("[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?")
    4. If rx.IsMatch(url) Then
    5. MsgBox("richtig")
    6. Else
    7. MsgBox("falsch")
    8. End If


    Also das klappt (test.de usw. geht auch), jedoch kommt die "falsch"-MsgBox wenn ich "www test de" benutze. Muss man das auch in diesem Pattern angeben damit auch Leerzeichen gehen oder wie wird das dann gemacht?

    Edit: Hab mir mal deine Seite angeschaut und da ist z.B. "\+" das + Zeichen oder "\?" das ? Zeichen usw. und dann habe ich mal als Test den String "a b" genommen und als Pattern "\ " (mit Leerzeichen dahinter) und das klappt, jedoch klappt es nicht wenn ich das Leerzeichen in deinem Pattern eingebe..

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

    Hallo zusammen,

    Habe ich richtig verstanden, dass sich der Link automatisch vervollständigen soll, wenn man zum Beispiel "test" eingibt?
    Dann geht das auch einfacher.
    Die TextBox bietet da eine Funktion für, die heißt "AutoCompleteMode".

    Ich hab mal ein Bild angehangen, da siehst du das.
    "AutoCompleteMode" stellst du auf "SuggestAppend" und "AutoCompleteSource" auf "CustomSource".
    Anschließend kannst du unter "AutoCompleteCustomSource" in der Auflistung die Links eintragen.
    (Du sagtest ja, das es nur 2 Links wären).

    Das wäre die sauberste Lösung, funktioniert soweit auch ganz gut.
    Ich hoffe ich konnte dir helfen.

    Gruß, PiasSoft
    Bilder
    • autocomplete.JPG

      29,37 kB, 289×383, 47 mal angesehen
    Hallo,
    naja vielleicht habe ich meine Frage etwas unpräzise gestellt, aber das meinte ich nicht. Es ist so:
    Ich habe z.B. 2 Links:
    1. Link: test.de/
    2. Link: blubb.com/

    Nun kann man in der TextBox was eingeben und das soll sozusagen prüfen ob es mit den 2. Links übereinstimmt.
    Also wenn man dann eingibt:
    1. test.de
    2. test.de/
    3. test.de
    4. test.de/
    5. test.de
    6. test.de/
    7. test.de
    8. test.de/
    usw.
    Also man muss nicht die genau richtige URL eingeben, sie soll nur einigermaßen stimmen. So wie bei der Googlesuche, da kann man ja auch vb-paradise oder vb-paradise.de oder vb-paradise.de usw eingeben und es findet immer diese Seite. Also das von SeriTools war schon richtig, nur klappt es bei mir leider nicht mit den Leerzeichen z.B. www test de..
    Wirklich?
    Also ich habe diesen Code:

    VB.NET-Quellcode

    1. Dim url As String = "www test de"
    2. Dim rx As New Regex("[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?")
    3. If rx.IsMatch(url) Then
    4. MsgBox("richtig")
    5. Else
    6. MsgBox("falsch")
    7. End If


    Bei mir kommt die Meldung "falsch"...
    Das ist wirklich seltsam.
    Mit welchem Event rufst du den Code denn ab?
    Über nen Button, nehme ich an.
    Oder direkt im TextChanged Event der TextBox?

    Ich habe es mit einem Button gemacht, und da funktioniert es mit exakt dem selben Code. :/


    Edit: habe den Code mal nochmal hier reingeschrieben, zur Sicherheit.
    Ist aber eigentlich der gleiche.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Dim url As String = "http://www.test.de/"
    3. Dim rx As New Regex("[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?")
    4. If rx.IsMatch(url) Then
    5. MsgBox("richtig")
    6. Else
    7. MsgBox("falsch")
    8. End If
    Es soll ja wie schon gesagt eine Art SuchTextBox sein und dann soll er halt auch "www test de" als "www.test.de" erkennen. Nur erkennt er das leider nicht mit den Leerzeichen. Wenn du in Google "www vbparadise de" eingibst findet er ja auch die richtige URL, also "http://www.vb-paradise.de/"

    PiasSoft schrieb:

    Naja, aber wenn du es mit "http://www.test.de/" machst erkennt er ja "www test de" als "www.test.de".
    Ich glaube wir denken aneinander vorbei. :/

    Sry, das habe ich jetzt nicht verstanden..^^
    Ich weiß nicht wie ichs noch erklären soll, "Dim URL As String = "www test de", das wird später zu "Dim URL As String = SuchTextBox.Text" und nun kann ich ja mit dem Code von oben in die TextBox verschiedenes eingeben z.B.:
    - test.de
    - test.de/
    - test.de
    - test.de/
    - test.de
    - test.de/
    usw...
    und es kommt die MsgBox mit der Meldung "richtig". Nun will ich aber auch wenn man "www test de" eingibt auch die "richtig"-MsgBox angezeigt wird, bei mir kommt jedoch immer die "falsch"-MsgBox..der Inhalt soll dann halt mit der URL "http://www.test.de/" verglichen werden, z.B. wenn man in der SuchTextBox nun nur "test" eingibt, dann kommt ja natürlich die Meldung "falsch". Jedoch wissen wir "Menschen" ja das mit "www test de" auch die URL gemeint ist, jedoch will VB das nicht erkennen..^^
    Keine Ahnung wie ich das anders erklären soll..ich will halt einfach dass er auch die Leerzeichen erkennt, das geht ja mit "\ ", aber ich weiß nich wie ich das in mein Pattern einfügen soll..

    Edit: Was ich grad gemerkt habe: mit dem Pattern wird ja geprüft, ob es überhaupt eine URL ist, also ist es ja dann auch egal ob es test.de oder google.de oder vb-paradise.de ist, obwohl ich ja nur 2 URL's habe, die geprüft werden sollen..

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