Position beim StringREplace

  • StringReplace macht das:

    $string = "AffeBananeGiraffe"

    $string = StringReplace($string, "Affe", "Hund")


    dann ist String jetzt HundBananeGiraffe.

    wenn du jetzt ganze zeilen ersetzen willst, musst du mit arrays arbeiten.
    oder war genau meinst du denn?

  • laut Hilfe sollte es aber auch "von-bis" ersetzen können, allerdings fehlt dann der Searchstring ... ?(

  • Hallo!

    das mit den festen Positionen gibt nur einen Sinn, wenn Du z.B. eine Steuerdatei mit festen Positionen hast
    Bei Deinem Beispiel 64-67 (=4 Zeichen) muß der Replacestring dann 4 Zeichen lang sein, damit erfüllst Du ja genau Deine Vorgabe. (es gibt keine "Endevorgabe", die mußt Du durch die Satzlänge definieren - du kannst nur mit der Stratposition arbeiten).

    Sag mal genau, was Du mit dem Programm machen möchtest, man kann den String auch "auseinandernehmen" oder mit RegExp arbeiten.

    Gruss

    schau mal das an:

    Spoiler anzeigen
    [autoit]


    $old="Autoit ist ein supergoiles Teil"
    $newstring="blubbergeiles"
    $Pos_start=8
    $Pos_ende=10

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

    _stringreppos($old,$Pos_start,$Pos_ende,$newstring)

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

    Func _stringreppos($String,$Pos_start,$Pos_ende,$newstring)
    $leng_replacestring=($pos_ende-$pos_start+1) ; länge des neuen Strings
    msgbox(0,"der Ersatzungsstring ist", $leng_replacestring & " lang")

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

    select
    case Stringlen($newstring)=($pos_ende-$Pos_start) ; Länge passt
    ; einfach weitermachen
    case Stringlen($newstring) < $leng_replacestring ; Länge des Replacestrings zu kurz
    while StringLen($newstring) < $leng_replacestring
    $newstring=$newstring & " "
    Wend
    case StringLen($newstring) > $leng_replacestring
    $newstring=StringLeft($newstring,$leng_replacestring)

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

    EndSelect

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

    $neu=StringReplace($old,$pos_start,$newstring)
    msgbox(0,"jetzt hab ich", $neu)

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

    EndFunc

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

    German

  • Bei mir kommt als String dann HundBananeGirHund heraus!

    Anderfalls müsste man
    $string = StringReplace($string, "Affe", "Hund", 1)
    eingeben :D

    lone_wolf

  • Am einfachsten sollte es so sein:

    [autoit]


    $sString = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
    $sReplace = "abcd"
    $iStart = 64
    $iEnde = 67
    $sErgebnis = StringLeft($sString, $iStart - 1) & $sReplace & StringRight($sString, StringLen($sString) - $iEnde)

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

    MsgBox(0, "Ersetzter String", $sErgebnis)

    [/autoit]

    Grüße,
    Buffo