StringReplace vertauscht Zeichen

  • Hi,
    Ich habe ein eigenartiges Problem mit StringReplace
    z.B. Hier:

    Spoiler anzeigen
    [autoit]

    #include <String.au3>

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

    $sString1 = "ASinh(9)"
    $sString1 = StringReplace($sString1, "ASinh(", "_ASinh(")
    MsgBox(0, "", $sString1)

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

    $sString2 = "ASinh(9)"
    MsgBox(0, "", _Replace($sString2))

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

    Func _Replace($sString)
    Local $sReplace
    $sReplace = StringReplace($sString, "Sinh(", "_Sinh(")
    $sReplace = StringReplace($sReplace, "ASinh(", "_ASinh(")
    $sReplace = StringReplace($sReplace, "Cosh(", "_Cosh(")
    $sReplace = StringReplace($sReplace, "ACosh(", "_ACosh(")
    $sReplace = StringReplace($sReplace, "Tanh(", "_Tanh(")
    $sReplace = StringReplace($sReplace, "ATanh(", "_ATanh(")
    $sReplace = StringReplace($sReplace, "²", "^2")
    $sReplace = StringReplace($sReplace, "³", "^3")
    $sReplace = StringReplace($sReplace, ",", ".")
    If StringInStr($sReplace, "Ran(") Then
    $sRandomMax = _StringBetween($sReplace, "Ran(", ")")
    If IsArray($sRandomMax) Then
    For $i = 0 To UBound($sRandomMax) - 1
    $sReplace = StringReplace($sReplace, "Ran(" & $sRandomMax[$i] & ")", "Random(0, " & $sRandomMax[$i] & ", 1)", 1)
    Next
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndIf
    If StringInStr($sReplace, "ggT(") Then
    $sReplace = StringReplace($sReplace, "ggT(", "_Euclid_Algorithm(")
    $sReplace = StringReplace($sReplace, ";", ",")
    EndIf
    Return $sReplace
    EndFunc ;==>_Replace

    [/autoit]

    In der 1. MsgBox wird es richtig augegeben _Asinh(9) in der 2. MsgBox steht dann aber A_Sinh. Wie kann man das lösen oder wo liegt mein Fehler?

    Einmal editiert, zuletzt von Molaynox (21. April 2011 um 19:53)

  • Du übergibst "ASinh(9)".

    [autoit]

    $sReplace = StringReplace($sString, "Sinh(", "_Sinh(")
    $sReplace = StringReplace($sReplace, "ASinh(", "_ASinh(")

    [/autoit]

    Der erste Replace greift schon, er replaced ASinh(9) zu A_Sinh(9). Jetzt replaced der zweite natürlich nicht mehr.
    Du kannst aber doch auch einfach ein _ vorne ranhängen, wäre doch das gleiche Ergebnis?