StringRegExp

  • Hallo,

    ich tu mir echt schwer mit dem Befehl. Ich habe eine Variable die in Anführungszeichen steht. Also "34534".

    Jetzt will ich die Anführungszeichen löschen und nur den Wert dazwischen weiter verwenden.

    Nur wie ?

  • StringRegExp wäre dafür eh nicht die geeignete Funktion... weil das Ergebnis dann ein Array wäre, aus dem du den String erst wieder herausholen müsstest. Da du lediglich einen String von den Anführungszeichen befreien willst, wäre StringRegExpReplace die richtige Funktion - das macht Sinn, wenn nicht sicher ist, ob der String in '' oder in "" verpackt ist, andernfalls wäre StringReplace die erste Wahl!

    Hier ein Beispiel, wie es mit StringRegExpReplace geht:

    Code
    Local $sString1 = '"Teststring"'
    ConsoleWrite('> $sString1 = ' & $sString1 & @CRLF)
    $sString1 = StringRegExpReplace($sString1, '^["|''](.+)["|'']$', '\1')
    ConsoleWrite('> $sString1 = ' & $sString1 & @CRLF)
    
    Local $sString2 = "'Teststring'"
    ConsoleWrite('- $sString2 = ' & $sString2 & @CRLF)
    $sString2 = StringRegExpReplace($sString2, '^["|''](.+)["|'']$', '\1')
    ConsoleWrite('- $sString2 = ' & $sString2 & @CRLF)

    > $sString1 = "Teststring"

    > $sString1 = Teststring

    - $sString2 = 'Teststring'

    - $sString2 = Teststring

  • ...ich werfe mal _StringBetween() in den Ring....

    Code
    #include <String.au3>
    $string = '"bla"'
    $ret = _StringBetween($string, '"','"')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret[0] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    wobei ein Stringmid() bei bekanntem String ja noch einfacher wäre^^

  • wobei ein Stringmid() bei bekanntem String ja noch einfacher wäre^^

    Das gilt doch genauso für _StringBetween... aber ok, falls die Anführungszeichen bekannt sind, wäre StringMid die erste Wahl, andernfalls StringRegExpReplace.

    Hier noch ein StringRegExpReplace bei dem die Anführungszeichen auch fehlen dürfen...

    > $sString1 = "Teststring1"

    > $sString1 = Teststring1"

    + $sString2 = 'Teststring2'

    + $sString2 = Teststring2'

    - $sString3 = Teststring3

    - $sString3 = Teststring3

  • naja, wenn man die Frage nicht richtig liest.....

    Ich habe eine Variable die in Anführungszeichen steht. Also "34534".

    Jetzt will ich die Anführungszeichen löschen und nur den Wert dazwischen weiter verwenden.

    omfg...AutoIt rulez...

    Code
    $a="12345"
    msgbox(0,$a*3,int($a)*3)

    Je nachdem, was für ein Wert in der Variable steht, braucht man nur "casten"

  • naja, wenn man die Frage nicht richtig liest.....

    Wenn ich die Frage richtig lese, ergibt sie keinen Sinn... denn 34534 ist keine Variable, die in Anführungszeichen steht... gemeint ist damit wohl eine Zeichenkette (String).

    Je nachdem, was für ein Wert in der Variable steht, braucht man nur "casten"

    In seinem Fall sähe es aber wohl eher so aus...

    Code
    $a='"12345"'
    msgbox(0,$a*3,int($a)*3)

    ...was dann aber nicht einfach mit "casten" zu erledigen ist.

  • Für sowas benutze ich immer:

    Die Funktion ersetzt das Zeichen " mit nichts.

    So ist es aber falsch !

    Du setzt Parameter 4 -> occurrence auf 1, d.h. es wird nur das erste Auftreten ersetzt.

    -> $var = 34534"

    Korrekt wäre : occurrence auf 0 , bzw. den Parameter ganz weglassen, da 0 der Defaultwert ist.

    -> $var = 34534

    Code
    Global $var
    ; Falsch :
    $var = StringReplace('"34534"', '"', "", 1) ; Parameter 4 -> occurrence = 1
    ConsoleWrite ('$var = ' & $var & @CRLF)
    
    ; Korrekt :
    $var = StringReplace('"34534"', '"', "", 0) ; Parameter 4 -> occurrence = 0
    ConsoleWrite ('$var = ' & $var & @CRLF)

    EDIT :

    Es wäre schön, wenn donpascal mal ein Statement abgeben würde ! Seine Ausgangsfrage, also :

    Ich habe eine Variable die in Anführungszeichen steht. Also "34534".

    Jetzt will ich die Anführungszeichen löschen und nur den Wert dazwischen weiter verwenden.

    ist, wie Bitnugger bereits erwähnt hat, bestenfalls missverständlich.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (15. Januar 2019 um 11:26)

  • Ups, mein Fehler. Ich habe den Parameter mit StringSplit verdödelt. X/:sleeping:

    Danke für die Korrigierung! :saint::thumbup: