string umformen

  • Hi,

    ich habe einen String der von 2- 14 Zeichen lang ist und immer gerade.
    diesen möchte ich zerlegen und neu zusammensetzen und zwar so dass eine neues Array erzeugt wird mit jeweils 2 Zeichen. Also aus einem 14 Zeichen lagen sollen ein Array mit 7 Einträgen werden von 1 anfangend (nicht null) bis 7 mit 1-2 3-4 5-6 7-8 9-10 11-12

    nur bekomm ich das nicht hin sondern ich zerlege das atm in
    1-2 2-3 3-4 etc

    [autoit]


    $string = "8052E8AA52F1" ;bsp
    If StringLen($string) <= 14 OR StringLen($string) = 2 OR StringLen($string) = 4 OR StringLen($string) = 6 OR StringLen($string) = 8 OR StringLen($string) = 10 OR StringLen($string) = 12 Then
    $string = StringSplit($string, "")
    $count = $string[0]/2
    For $i = 1 To $count
    $new[$i] = $string[$i]&$string[$i+1]
    Next
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von leviathan (24. Juli 2007 um 15:36)

    • Offizieller Beitrag
    [autoit]


    $string = "8052E8AA52F1" ;bsp
    If StringLen($string) <= 14 OR StringLen($string) = 2 OR StringLen($string) = 4 OR StringLen($string) = 6 OR StringLen($string) = 8 OR StringLen($string) = 10 OR StringLen($string) = 12 Then
    $string = StringSplit($string, "")
    $count = $string[0]/2
    For $i = 1 To $count
    $new[$i] = $string[$i]&$string[$i+1]
    $i = $i + 1
    Next
    EndIf

    [/autoit]
  • füg ma bei der for schleife noch step 2 dazu und $string[0] nich halbieren dann sollte es funktionieren
    weil zur zeit machste immer $string[1]&$string[2] danach $string[2]&$string[3] weil $i immer nur einen hochzählt

  • @Dustin ja aber wenn ich Step 2 mache ist doch $new dann nicht mehr 1 bis 7

    hier mal die ganze Funktion:

    [autoit]

    Func _pushdec()
    Dim $new[16]
    $dec = ""
    $string = GUICtrlRead($input)
    If StringLen($string) <= 14 OR StringLen($string) = 2 OR StringLen($string) = 4 OR StringLen($string) = 6 OR StringLen($string) = 8 OR StringLen($string) = 10 OR StringLen($string) = 12 Then
    $string = StringSplit($string, "")
    $count = $string[0]/2
    For $i = 1 To $count Step 2
    $new[$i] = $string[$i]&$string[$i+1]
    MsgBox(0,"", $new[$i])
    Next

    For $k = 1 To $count
    $dec = $dec&_encdec("dec", $new[$k], $k)
    Next

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

    GUICtrlSetData($output, $dec)
    Else
    GUICtrlSetData($output, "2-14 chars/power of 2")
    EndIf
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von leviathan (24. Juli 2007 um 15:53)

  • Ich habe auch noch eine Lösung:

    [autoit]

    Dim $string = "ab12cd34ef56gh"
    Dim $index = 1
    Dim $array [8]

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

    while StringLen($string) >= 2
    $array[$index] = StringLeft($string,2)
    $index += 1
    If StringLen($string) > 2 then
    $string = StringMid($string,3)
    Else
    $string = ""
    EndIf
    wend

    [/autoit]

    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"

    • Offizieller Beitrag

    HI,

    [autoit]

    #include<Array.au3>
    $string = "8052E8AA52F1"

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

    $ar = _provideArray($string)
    _ArrayDisplay($ar)

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

    Func _provideArray($str)
    $reArray = StringRegExp($str, '..', 3)
    _ArrayInsert($reArray, 0, UBound($reArray)+1)
    Return $reArray
    EndFunc

    [/autoit]

    So long,

    Mega

  • ok danke ging damit Micha_he
    so nun noch die Methode von th Meger ausprobieren

    edit: funktioniert einwandfrei danke

    Einmal editiert, zuletzt von leviathan (24. Juli 2007 um 17:11)