Zeichen aus Var entfernen

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Zeichen aus Var entfernen

Re: Zeichen aus Var entfernen

Post by BNOLI » 19 May 2020, 06:41

Danke :thumbup:

Re: Zeichen aus Var entfernen

Post by just me » 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

Re: Zeichen aus Var entfernen

Post by BNOLI » 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

Re: Zeichen aus Var entfernen

Post by nacken012 » 18 May 2020, 07:54

Vielen lieben Dank, jetzt klappt alles perfekt :-)

Re: Zeichen aus Var entfernen

Post by BNOLI » 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 :)

Re: Zeichen aus Var entfernen

Post by KHA » 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

Re: Zeichen aus Var entfernen

Post by just me » 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] ...

Re: Zeichen aus Var entfernen

Post by nacken012 » 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.

Re: Zeichen aus Var entfernen

Post by just me » 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()

Re: Zeichen aus Var entfernen

Post by KHA » 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

Re: Zeichen aus Var entfernen

Post by BNOLI » 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:

Zeichen aus Var entfernen

Post by nacken012 » 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

Top