Doppelte einträge anzeigen Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Doppelte einträge anzeigen

02 May 2019, 09:02

Hallo,
wie kann ich doppelte oder mehr einträge in einer Liste anzeigen.
z.B:
hier kommt das Wort Rot Doppelt vor.

Code: Select all

list=
(
Rot
Grün
Blau
Braun
Rot
)


msgbox, % Rot
Für Ideen wie immer dankbar.
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Doppelte einträge anzeigen  Topic is solved

02 May 2019, 10:51

Wenn das Ganze nicht zu groß wird:

Code: Select all

#NoEnv

Liste =
(
Gelb
Rot
Grün
Blau
Braun
Rot
Blau
)

Sorted := Liste
Sort, Sorted, CL
Array := StrSplit(RTrim(Sorted, "`r`n"), "`n", "`r")

I := 1
M := Array.Length()
Mehrfach := []
Mehrfach.SetCapacity(M)
While (I < M) {
   Item := Array[I]
   Count := 1
   While (I < M) {
      If (Item == Array[++I])
         Count++
      Else
         Break
   }
   If (Count > 1)
      Mehrfach.Push({Item: Item, Count: Count})
}
Sorted := ""
Array := ""

For Each, Treffer In Mehrfach
   MsgBox, % Treffer.Item . " -> " . Treffer.Count

ExitApp
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Doppelte einträge anzeigen

05 May 2019, 11:42

Danke dir! hat super funktioniert
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Doppelte einträge anzeigen

08 May 2019, 04:36

Alternativ kannst du auch den assoziativen Array direkt zum Zählen verwenden:

Code: Select all

#NoEnv

Liste =
(
Gelb
Rot
Grün
Blau
Braun
Rot
Blau
)

counter := {}
Array := StrSplit(RTrim(Liste, "`r`n"), "`n", "`r")
for each, item in Array {
	counter[item] := counter.hasKey(item) ? counter[item] + 1 : 1 ;füge dem Eintrag item in counter 1 hinzu oder setze es auf 1 falls noch kein vorheriger Wert existiert
}
Recommends AHK Studio

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 61 guests