String nach einer bestimmten zeichenfolge durchsuchen

  • Hallo

    Ich hab einen String in dem mehrere Namen stehen. dieser ist wie folgt aufgebaut:

    name1(1x)|name2(2x)|name3(3x)|name4(4x)|.....
    kann aber auch so aussehen:
    name4(4x)|name1(1x)|name3(3x)|name2(2x)|.....

    mit String split splitte ich nun die Namen durch das Trennzeichen | auf. Bekomme dann z.b :
    Split[1] = "name3(3x)"
    Split[2] = "name2(2x)"
    ...

    MeineFrage ist wie finde ich herraus wie z.b. der name mit dem (2x) ist. das 2x ist dabei immer in dem Namen enthalten. müsste also in den gesplitteten String nach den 2x suchen
    Aber wie?

    Einmal editiert, zuletzt von hanswurst (15. Juli 2008 um 14:20)

  • Ich weiß nicht so genau ob ich dich richtig verstehe.
    Du willst wissen in welchem Split der Name steht der (2x) enthält?
    Schau dir mal die Funktion StringInStr an.
    Die müsste dir weiterhelfen.
    Damit kannst du in einem String nach eine bestimmten String suchen.

    Vllt hilfts dir.
    Grüße
    Ben

  • wie wärs mit (frei Hand, ohne Funktionsgarantie):

    $name = StringLeft($Split[1], StringInStr($Split[1], "(") - 1)

    Hierbei wird der linke Teil des Strings genommen, bis zum Zeichen vor der "(" !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Gut dann hier ein wenig spezieller:

    Also der Gesamtstring zeigt die Namen aller Netwekverbindungen, diese durch ein Trennzeichen | vebunden

    RT_Ethernet Ablagen, Arcomat, AD, AM (1X)|TCP IP Antriebe, Regler Serviceport (2X)|Fernwartung (Onboard)|EtherCAT (4X)|EtherCAT, Redundanz (3X)|

    Mit Stringsplit bekomme ich halt die einzelnen Namen der Verbindungen.
    z.b.
    Verbindung1 = RT_Ethernet Ablagen, Arcomat, AD, AM (1X)
    Verbindung2 = TCP IP Antriebe, Regler Serviceport (2X)
    Verbindung3 = Fernwartung (Onboard)
    Verbindung4 = EtherCAT (4X)
    Verbindung5 = EtherCAT, Redundanz (3X)
    usw

    Meine Frage war wie finde ich raus in welchem dieser Namen "(2x)" steckt

    Die schon vorgeschlagene Funktion StringinStr dürfte da zum gewünschten Ergebnis führen

    Danke dafür

  • Ich denk du hast es inzwischen vllt schon hinbekommen, habs trotzdem noch mal schnell selber geschrieben.

    [autoit]

    $a_split= StringSplit ("MeinString", "|")

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To $a_split[0]
    If StringInStr($a_split[$i]), "(2x)") Then
    MsgBox(0, "Juhu", "(2x) steht in $a_split[" & $i &"]")
    EndIf

    [/autoit]

    Habs nicht getestet. Müsste aber eigentlich so gehn.
    Bye
    Ben

  • Danke HowToBen, habs aber schon hinbekommen sieht im Prinziep genau wie bei dir aus

    [autoit]

    $Verbindungen = StringSplit(Netzwerkverbindungen(),"|") ;öffnet die Funktion Netzwerkverbindungen und teilt den zurückgegebenen String in die einzelnen Verbindungen auf
    For $i = 1 to $Verbindungen[0] Step 1
    if StringInStr($Verbindungen[$i], "(2x)") <> 0 then $Verbindungalt = $Verbindungen[$i]
    next

    [/autoit]