Verständnisproblem StringUpper und <>

  • Warum gibt dieses Skript

    Spoiler anzeigen
    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    ConsoleWrite('Returned (_StripAugly): ' & _StripAugly('L<b,/', True, '<|/|(|,') & @CRLF)

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

    Func _StripAugly($sRaw, $bStripLower, $sAugly)
    ConsoleWrite($sRaw & @CRLF)
    Local $aAugly = StringSplit($sAugly, "|"), $aRaw
    For $i = 1 To $aAugly[0]
    $sRaw = StringReplace($sRaw, $aAugly[$i], "")
    Next
    If $bStripLower Then
    $aRaw = StringSplit($sRaw, "")
    _ArrayDisplay($aRaw)
    For $i = 1 To $aRaw[0]
    ConsoleWrite($i & ": " & StringUpper($aRaw[$i]) & " <> " & $aRaw[$i] & " = ")
    Switch $aRaw[$i]
    Case 'Ä', 'Ö', 'Ü'
    ;do nothing
    Case Else
    ConsoleWrite(StringUpper($aRaw[$i]) <> $aRaw[$i] & @CRLF & @CRLF)
    If StringUpper($aRaw[$i]) <> $aRaw[$i] Then $sRaw = StringReplace($sRaw, $aRaw[$i], "")
    ConsoleWrite(@CRLF & "==>" & $sRaw & @CRLF)
    EndSwitch
    Next
    EndIf
    Return $sRaw
    EndFunc ;==>_StripAugly

    [/autoit]

    den erwarteten String zurück? Auch die Consolenausgaben sind rätzelhaft:

    Das Problem ist zwar schon mit StringIsLower gelöst mich würde aber interessieren wo der Logikfehler ist.

    Edit: der von mir so oft empfohlene Blick in die Hilfe hätte das Thema erspart:

    Zitat

    <> Prüft, ob zwei Werte nicht gleich sind. Groß- und Kleinschreibung wird nicht berücksichtigt, falls Strings verwendet werden. Um die Ungleichheit unter Beachtung der Groß- und Kleinschreibung festzustellen, ist Not ("string1" == "string2") zu verwenden

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (26. Februar 2013 um 12:36)

  • Ich würde einfach mal vermuten, dass <> Case-Insensitive ist. Funktioniert es mit dem hier?

    [autoit]


    Not ($sVar1 == $sVar2)

    [/autoit]

    chess

    Edit:
    Jup, "<>" ist Case-Insensitive.

    [autoit]


    $sVar1 = "d"
    $sVar2 = "D"

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

    ConsoleWrite("Case sensitive: " & (Not ($sVar1 == $sVar2)) & @CRLF)
    ConsoleWrite("Case insensitive: " & ($sVar1 <> $sVar2) & @CRLF)

    [/autoit]

    Als Alternative zu dem Not-Gedönse geht auch StringCompare. :P

    chess