Wie kann man aus einem string alles nicht nummerische entfernen?
Beispiel:
"A;1235-46275;Schrauben metrisch;Lager XY"
sollte ergeben
"123546275"
Wie kann man aus einem string alles nicht nummerische entfernen?
Beispiel:
"A;1235-46275;Schrauben metrisch;Lager XY"
sollte ergeben
"123546275"
HI,
nicht schön, aber selten:
[autoit]#include <Array.au3>
$string = "A;1235-46275;Schrauben metrisch;Lager XY"
;"123546275"
$t = StringRegExp($string, '(\d*)', 3)
MsgBox(0,"", StringStripWS(_ArrayToString($t, ' '), 8))
So long,
Mega
Falls du kein include möchtest, ein paar Schritte mehr, geht aber auch:
[autoit]$string="abc,+12-tzr563Q><?9" ;num=125639
$num=""
$len=StringLen($string)
For $i=1 To $len
$pos=StringMid($string,$i,1)
If StringIsDigit($pos) Then $num=$num&$pos
Next
MsgBox(0,"numerisch:",$num)
Ja diese Version ohne include gefällt mir. Habe es so ähnlich gemacht, dachte aber es geht mit einer eingebauten Funktion noch eleganter.
Wenn du das mehr als einmal verwendest, kannst du es auch als eigene Funktion schreiben. Dann hast du natürlich auch nur noch einen Befehl zum Aufruf:
$string="abc,+12-tzr563Q><?9" ;num=125639
MsgBox(0,"numerisch:",_StringNumExtract($string))
Func _StringNumExtract($fullstring)
$num=""
$len=StringLen($fullstring)
For $i=1 To $len
$pos=StringMid($fullstring,$i,1)
If StringIsDigit($pos) Then $num=$num&$pos
Next
If $num <>"" Then
Return $num
Else
Return -1 ; String enthält keine numerischen Elemente
EndIf
EndFunc
Edit:
Ich hab mal die Funktion noch erweitert. Sie gibt nun Status (numerisch enthalten oder nicht), numerischen und nichtnumerischen Stringteil in ein Array aus:
$string= "abc,+12-tzr563Q><?9" ;num=125639
$zahl= _StringNumExtract($string)
MsgBox(0,"","numerisch: "&$zahl[1]& @LF &"nichtnumerisch: "&$zahl[2])
Func _StringNumExtract($fullstring)
Dim $array[3]
$num=""
$nonum=""
$len=StringLen($fullstring)
For $i=1 To $len
$pos=StringMid($fullstring,$i,1)
If StringIsDigit($pos) Then
$num=$num&$pos
Else
$nonum=$nonum&$pos
EndIf
Next
If $num <>"" Then
$array[1]= $num ; alle numerischen Elemente
$array[0]= 0 ; numerische Elemente enthalten
Else
$array[0]= -1 ; String enthält keine numerischen Elemente
EndIf
$array[2]= $nonum ; alle nichtnumerischen Elemente
Return $array ; Rückgabe Array [0] enthält Status 0 od. -1; [1] enthält num. Teil; [2] enthält nichtnum. Teil
EndFunc