Zeichen aus Var entfernen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

nacken012
Posts: 90
Joined: 22 Jul 2016, 14:39

Zeichen aus Var entfernen

18 May 2020, 05:18

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
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Zeichen aus Var entfernen

18 May 2020, 05:29

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 :arrow: Asc()-Wert einer Zahl entsprechen, oder den Befehl :arrow: If var is not type benutzen, oder auf Teufel komm raus :arrow: StrReplace()n :lol:
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Zeichen aus Var entfernen

18 May 2020, 06:21

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
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Zeichen aus Var entfernen

18 May 2020, 07:00

'Optimierte' Version ;) :

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%
Und wenn's noch etwas mehr sein darf:

Code: Select all

Anzahl := (Zahlen := StrSplit(Trim(RegExReplace(OCR, "\D+", " ")), " ")).Length()
nacken012
Posts: 90
Joined: 22 Jul 2016, 14:39

Re: Zeichen aus Var entfernen

18 May 2020, 07:17

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.
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Zeichen aus Var entfernen

18 May 2020, 07:27

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] ...
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Zeichen aus Var entfernen

18 May 2020, 07:42

nacken012 wrote:
18 May 2020, 07:17
Vielen Dank, das klappt mit der Msgbox Anzeige super, aber irgendwie bin ich wohl zu blöd das in 4 Variablen zu speichern.
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
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Zeichen aus Var entfernen

18 May 2020, 07:52

just me wrote:
18 May 2020, 07:27
Wenn der Name des Arrays Var ist, finden sich die Werte nicht in
Var1, Var2, Var3 ...
sondern in
Var[1], Var[2], Var[3] ...
... 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 !
nacken012
Posts: 90
Joined: 22 Jul 2016, 14:39

Re: Zeichen aus Var entfernen

18 May 2020, 07:54

Vielen lieben Dank, jetzt klappt alles perfekt :-)
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Zeichen aus Var entfernen

18 May 2020, 08:15

@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 !
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Zeichen aus Var entfernen

19 May 2020, 03:06

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

Code: Select all

MeinArrayKlassenObjekt[Schlüssel] ; Array-Syntax
als auch der

Code: Select all

MeinArrayKlassenObjekt.Schlüssel ; Objekt-Syntax
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:

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
BNOLI
Posts: 548
Joined: 23 Mar 2020, 03:55

Re: Zeichen aus Var entfernen

19 May 2020, 06:41

Danke :thumbup:
Remember to use [code]CODE[/code]-tags for your multi-line scripts. Stay safe, stay inside, and remember washing your hands for 20 sec !

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 18 guests