Splitten?

  • Guten Tag,

    ich würde gerne etwas teilen in 2 Hälften.

    Hier mal das , was gesplittet werden soll :

    Apfel,Frucht,Birne,Frucht,Affe,Tier,Ameise,Tier

    Das Ganze soll nachher so gesplittet werden, das folgendes ausgegeben wird in einem Array :

    Array 1 : Apfel, Birne, Affe,Ameise

    Array 2 : Frucht,Frucht,Tier,Tier

    Aber wie mache ich das? Splitten kann ich es ja ganz normal nach dem "," , aber dann möchte ich es so haben.

    Einmal editiert, zuletzt von Julien (22. März 2012 um 09:38)

  • Das kannst du mit Hilfe von StringInStr machen.
    Du suchst im kompletten String das zweite Komma und nimmst den linken Teil , also "Apfel,Frucht". Den rechten Teil speicherst du in einer Variablen als Rest.
    Den linken Teil wertest du dann mit StringSplit aus und speicherst die beiden gefundenen Wörter.
    Jetzt fängst du wieder von vorne an. Suche im Reststring wieder nach dem zweiten Komma und so weiter bis kein Reststring mehr da ist.

    Das ganze also in einer Schleife verpackt.

    Du könntest auch nur StringInStr benutzen anstatt StringSplit. Das erste Wort bis zum Komma in Array1, das nächste in Array2 u.s.w.

  • ... es sind danach noch mehr Wörter und ich weiß ja nicht, welche es sind, also muss es einfach so gesplittet werden, dass jedes 2 te Wort woanders hinkommt.

  • [autoit]

    #include <Array.au3>
    $kram = StringSplit("Apfel,Frucht,Birne,Frucht,Affe,Tier,Ameise,Tier",",")
    Dim $eins[1] = [0], $zwei[1] = [0]

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

    For $i = 1 To $kram[0]
    If Mod($i,2) = 1 Then
    _ArrayAdd($eins,$kram[$i])
    $eins[0] += 1
    Else
    _ArrayAdd($zwei,$kram[$i])
    $zwei[0] += 1
    EndIf
    Next
    _ArrayDisplay($eins)
    _ArrayDisplay($zwei)

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    • Offizieller Beitrag

    oder so:

    [autoit]


    #include <Array.au3>
    $string = "Apfel,Frucht,Birne,Frucht,Affe,Tier,Ameise,Tier,"

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

    $array1 = StringRegExp($string, '(?:(.+?),.+?,)', 3)
    _ArrayDisplay($array1)

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

    $array2 = StringRegExp($string, '(?:.+?,(.+?),)', 3)
    _ArrayDisplay($array2)

    [/autoit]