Text filtern mit StringInStr bzw. Position von Wörtern herausfinden und anwählen

  • Moin Leute,

    ich komm da einfach nicht logisch weiter wie ich aus einem Text(Mit Zahlen und Buchstaben) ein bestimmtes Wort !BZW.! eine bestimmte Zahlenkombination BZW. Position herausbekomme. ?(

    INPUT vom CLIPBOARD:

    Test1: Test2-123456789

    -----------------------------------------

    Das ganze läuft folgt ab, dass ich die Information übers Clipboard bekomme und auswerten möchte. Dafür müssten die Sachen in Variablen gespeichert werden.
    Test1 = Die Info ist immer Fest
    Test2 = Zufällig soll in Variable gespeichert werden!
    123456789 = Zufällig soll in Variable gespeichert werden!

    Der Bindestrich "-" ist immer fix im Input woran man sich orientieren könnte


    Beispiel:

    Danke im Voraus!

  • Guten Morgen,

    Das ist wahrscheinlich wieder was für die Regex Profis. Die schnuckeln dir das locker in eine Zeile :)


    Mir persönlich fehlt da als Angabe zu deinem $sData-String ein Beispiel. Denn ich bin mit meinem Kenntnisstand auf Schleifen und Getrimme hier und Geschnippel da beschränkt. Da ist für mich von Bedeutung, wie ich den gesuchten String vom Rest abgrenzen kann. Gibt es also Absatzzeichen, oder würde dir alles in einer Zeile angezeigt werden? Unten gehe ich einfach mal von ersterem aus.

    Die Position habe ich jetzt nicht dazu geschrieben. Die ergibt sich aber schon aus deiner ersten StringinString Suche + bspw. StringLen("Test1: "). Alles recht unprofessionell.. Nach diesem Schema kann man aber mit allen möglichen Texten ziemlich einfach arbeiten. Du musst nur das Prinzip mal verstanden haben, dann geht es ab ;)

    Spoiler anzeigen

    Grüße autoiter

  • Oder mit StingSplit:

    AutoIt
    $sEingabe = "Text-123456789" ;Hier dein Eingabestring
    
    
    $aTeile = StringSplit ( $sEingabe, "-", 2) ;Warum so und nicht anders kannst du in der Hilfe finden
    
    
    $sErsterTeil = $aTeile[x]   ; x-> Hier die Hilfe nachlesen, damit du weist wie es funktioniert
    $sZweiterTeil = $aTeile[x]  ; x-> Hier die Hilfe nachlesen, damit du weist wie es funktioniert

    Grüße
    Tim

  • Ich habe mich erst über die nachfolgenden Antworten gewundert. Aber ja, ich habe gar nicht richtig gelesen. :D

    Dein "Test1: Test2-123456789" ist nicht eingebettet in anderen Text, sondern ist der gesamte Inhalt von $sData.
    Wie oben geschrieben erschöpft es sich dann auch in dem Dreizeiler. Du musst da nur im ersten Teil "Test1: " mit Stringreplace oder StringtrimLeft entfernen.

    Grüße autoiter

  • @4ern
    hast du dein Pattern vorher mal getestet?
    Damit wird nur 23456789 (ohne die führende 1...) gefunden.
    Die zweite benötigte Information "Test2" wird damit auch nicht gematcht.

    Wenn schon RegEx dann eher sowas:^\w+:\s*(\w+)-(\d+)

    @Interlink
    Heb dir die RegEx-Funktionen für später auf - schöne Sache aber braucht Zeit.
    Die Lösungen mit StringSplit oder StringInStr/String[Trim]Left|Right/StringMid bringen dich ebenfalls ans Ziel.