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 ?
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 ?
Ist denn in jedem Fall das 1. und letzte Zeichen ein "? Dann kannst du doch einfach mit StringTrimLeft und StringTrimRight ein Zeichen abschneiden.
Wenn keine anderen Gänsefüßchen enthalten sind kannst du auch StringReplace verwenden.
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:
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....
#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...
Local $sString1 = '"Teststring1"'
ConsoleWrite('> $sString1 = ' & $sString1 & @CRLF)
$sString1 = StringRegExpReplace($sString1, '(?:^["|''])?(.+)(?:["|'']$)?', '\1')
ConsoleWrite('> $sString1 = ' & $sString1 & @CRLF)
Local $sString2 = "'Teststring2'"
ConsoleWrite('+ $sString2 = ' & $sString2 & @CRLF)
$sString2 = StringRegExpReplace($sString2, '(?:^["|''])?(.+)(?:["|'']$)?', '\1')
ConsoleWrite('+ $sString2 = ' & $sString2 & @CRLF)
Local $sString3 = 'Teststring3'
ConsoleWrite('- $sString3 = ' & $sString3 & @CRLF)
$sString2 = StringRegExpReplace($sString3, '(?:^["|''])?(.+)(?:["|'']$)?', '\1')
ConsoleWrite('- $sString3 = ' & $sString3 & @CRLF)
Alles anzeigen
> $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...
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...
...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
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
Alles anzeigenSo 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
CodeGlobal $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 :
ist, wie Bitnugger bereits erwähnt hat, bestenfalls missverständlich.
Gruß Musashi
Ups, mein Fehler. Ich habe den Parameter mit StringSplit verdödelt.
Danke für die Korrigierung!