Hallo, ich versuche gerade per OCR Erkennung aus einem Spiel Zahlen zu bekomme, das sind die Stückzahlen einer Sammlung.
Die Zahlen werden auch perfekt erkannt nur es stehen immer wieder verschiedene Sonderzeichen mit in dem Text.
Beispiel was ich erhalte:
(13318 @ x12838 x12936 x11462 x12580
Nun suche ich eine Möglichkeit aus dem Clipboard wo der Text reinkopiert wird, alle Sonderzeichen zu entfernen, also eigentlich alles
bis auf die Zahlen selber, denn die bräuchte ich als einzelne Variablen das dann so aussieht nachher
Var1 = 13318
Var2 = 12838
Var3 = 11462
Var4 = 12580
Zeichen aus Var entfernen
Moderator: jNizM
Re: Zeichen aus Var entfernen
Wenn wir beide jetzt RegEx könnten, wäre das Problem praktisch schon gelöst. Ansonsten kannst du natürlich die Variable nach Zeichen parsen die nicht dem Asc()-Wert einer Zahl entsprechen, oder den Befehl If var is not type benutzen, oder auf Teufel komm raus StrReplace()n
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
Re: Zeichen aus Var entfernen
vlt, so:
Code: Select all
myzahlen := "(13318 @ x12838 x12936 x11462 x12580)"
myNewZahlen := Trim(RegExReplace(myZahlen, "\D", " "))
myNewZahlen := RegExReplace(myNewZahlen, "\s+", " ")
EinzelneZahlen := StrSplit(myNewZahlen, A_Space)
for k, v in EinzelneZahlen
MsgBox,% Var%k% := v
Re: Zeichen aus Var entfernen
'Optimierte' Version :
Und wenn's noch etwas mehr sein darf:
Code: Select all
OCR := "(13318 @ x12838 x12936 x11462 x12580"
Zahlen := StrSplit(Trim(RegExReplace(OCR, "\D+", " ")), " ")
Anzahl := Zahlen.Length()
For Each, Zahl In Zahlen
MsgBox, 0, Zahl %A_Index% von %Anzahl%, %Zahl%
Code: Select all
Anzahl := (Zahlen := StrSplit(Trim(RegExReplace(OCR, "\D+", " ")), " ")).Length()
Re: Zeichen aus Var entfernen
Vielen Dank, das klappt mit der Msgbox Anzeige super, aber irgendwie bin ich wohl zu blöd das in 4 Variablen zu speichern.
Sinn ist, die 4 verschiedenen Zahlen in einem Edit Feld einzutragen.
Sinn ist, die 4 verschiedenen Zahlen in einem Edit Feld einzutragen.
Re: Zeichen aus Var entfernen
StrSplit() liefert die Werte in einem Array.
Wenn der Name des Arrays Var ist, finden sich die Werte nicht in
Var1, Var2, Var3 ...
sondern in
Var[1], Var[2], Var[3] ...
Wenn der Name des Arrays Var ist, finden sich die Werte nicht in
Var1, Var2, Var3 ...
sondern in
Var[1], Var[2], Var[3] ...
Re: Zeichen aus Var entfernen
Die sind bereits in Variablen gespeichert und es sind in deinem Beispiel 5 Variablen
z.B
Code: Select all
OCR := "(13318 @ x12838 x12936 x11462 x12580"
Anzahl := (Zahlen := StrSplit(Trim(RegExReplace(OCR, "\D+", " ")), " "))
; Array Version
MsgBox, % Anzahl[1]
MsgBox, % Anzahl[2]
MsgBox, % Anzahl[3]
MsgBox, % Anzahl[4]
MsgBox, % Anzahl[5]
; oder in Variable speichern
For Each, Zahl In Zahlen
Var_%A_index% = %Zahl%
MsgBox, % Var_1
MsgBox, % Var_2
MsgBox, % Var_3
MsgBox, % Var_4
MsgBox, % Var_5
Re: Zeichen aus Var entfernen
... vll kannst du mir erklären wann (bzw. in welchem Kontext) man Var[1] < > Var.1 nutzen sollte (denn beide würden im Beispiel funktionieren)? Danke
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
Re: Zeichen aus Var entfernen
Vielen lieben Dank, jetzt klappt alles perfekt
Re: Zeichen aus Var entfernen
@nacken012 just me's code liefert dir genau diese liste 'am Stück'.
Code: Select all
inOCR := "(13318 @ x12838 x12936 x11462 x12580"
Zahlen := StrSplit(Trim(RegExReplace(inOCR, "\D+", " ")), " ")
For Each, Zahl In Zahlen
index .= Zahlen[A_Index] "`n" ; index concatinieren
MsgBox % outOCR := SubStr(index,1,-1) ; LF char abschneiden
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
Re: Zeichen aus Var entfernen
Moin @BNOLI,
in AHK 1.1 haben alle Benutzerobjekte eine weitestgehend identische Struktur. Sie alle sind 'assoziative Arrays' mit einer Grundausstattung von Methoden. Auch wenn die Doku zwischen Arrays, Klassen und sonstigen Objekten unterscheidet, sind sie im Kern identisch. Man kann deshalb Alle sowohl mit der
als auch der
ansprechen, wenn der Wert im Schlüssel es zulässt (man kann ja so ziemlich alles als Schlüsselwert verwenden).
Ich habe mir angewöhnt, für den Zugriff auf Schlüssel/Wertpaare fast ausschließlich die Array-Synta zu nutzen. Die hat bei mehrdimensionalen Arrays auch 'positive' Nebeneffekte.
Übrigens:
=
in AHK 1.1 haben alle Benutzerobjekte eine weitestgehend identische Struktur. Sie alle sind 'assoziative Arrays' mit einer Grundausstattung von Methoden. Auch wenn die Doku zwischen Arrays, Klassen und sonstigen Objekten unterscheidet, sind sie im Kern identisch. Man kann deshalb Alle sowohl mit der
Code: Select all
MeinArrayKlassenObjekt[Schlüssel] ; Array-Syntax
Code: Select all
MeinArrayKlassenObjekt.Schlüssel ; Objekt-Syntax
Ich habe mir angewöhnt, für den Zugriff auf Schlüssel/Wertpaare fast ausschließlich die Array-Synta zu nutzen. Die hat bei mehrdimensionalen Arrays auch 'positive' Nebeneffekte.
Übrigens:
Code: Select all
For Each, Zahl In Zahlen
index .= Zahlen[A_Index] "`n" ; index concatinieren
Code: Select all
For Each, Zahl In Zahlen
index .= Zahl "`n" ; index concatinieren
Re: Zeichen aus Var entfernen
Danke
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
Who is online
Users browsing this forum: No registered users and 18 guests