Mac OS X‎ > ‎AppleScript‎ > ‎Grundlagen‎ > ‎

2. Listen (lists)

Inhalt

  1. 1 Eine Liste mit zwei Strings definieren
  2. 2 Testen ob der Inhalt einer Variablen eine Liste ist
  3. 3 Eine Liste mit Strings und Zahlen definieren
  4. 4 Eine Liste aus einen Variablenwert (string), einem String und Zahlen definieren
  5. 5 Eine Liste aus zwei Listen definieren
  6. 6 Zwei Listen kombinieren
  7. 7 Einen Listeneintrag (item) am Anfang hinzufügen - Variante 1
  8. 8 Einen Listeneintrag (item) am Anfang hinzufügen - Variante 2
  9. 9 Einen Listeneintrag (item) am Ende hinzufügen - Variante 1
  10. 10 Einen Listeneintrag (item) am Ende hinzufügen - Variante 2
  11. 11 Einen Listeneintrag (item) ändern - Variante 1 (empfohlen)
  12. 12 Einen Listeneintrag (item) ändern - Variante 2
  13. 13 Einen Listeneintrag (item) ändern - Variante 3
  14. 14 Ersten Listeneintrag (item) bestimmen - Variante 1
  15. 15 Ersten Listeneintrag (item) bestimmen - Variante 2
  16. 16 Mittleren Listeneintrag (item) bestimmen
  17. 17 Letzten Listeneintrag (item) bestimmen - Variante 1
  18. 18 Letzten Listeneintrag (item) bestimmen - Variante 2
  19. 19 Letzten Listeneintrag (item) bestimmen - Variante 3
  20. 20 Teilliste aus einer Liste extrahieren - Variante 1
  21. 21 Teilliste aus einer Liste extrahieren - Vatiante 2
  22. 22 Reihenfolge der Listenelemente umkehren
  23. 23 Anzahl der Listeneinträge zählen - Variante 1
  24. 24 Anzahl der Listeneinträge zählen - Variante 2
  25. 25 Zufälligen Listeneintrag (item) bestimmen
  26. 26 Prüfen ob sich ein bestimmter Eintrag in einer Liste befinden - Variante 1
  27. 27 Prüfen ob sich ein bestimmter Eintrag in einer Liste befindet - Variante 2
  28. 28 Prüfen ob die Werte einer Liste - in gleicher Reigenfolge - in einer anderen Liste enthalten sind
  29. 29 String in eine Liste umwandeln, wobei der gesamte String zu einem einzigen Listeneintrag (item) wird
  30. 30 String in eine Liste umwandeln, wobei jedes Zeichen des Strings ein einzelner Listeneintrag (item) wird
  31. 31 String in eine Liste umwandeln, wo bei jedes Wort des Strings ein einzelner Listeneintrag (item) wird
  32. 32 Liste in einen String umwandeln
  33. 33 Routinen (handler)
    1. 33.1 Doppelte Listeneinträge entfernen - Variante 1 (Reihenfolge wird beibehalten)
    2. 33.2 Doppelte Listeneinträge entfernen - Variante 2 (Reihenfolge wird nicht beibehalten)
    3. 33.3 Eintrag / Einträge aus Liste entfernen

Die folgenden Beispiele zeigen dem Umgang mit Listen (lists).
  • Listen werden in geschweifte Klammern ({}) eingeschlossen.
  • Ist ein Listenelement ein String, dann muss er durch Anführungszeichen ("") eingeschlossen werden.
  • Einzelne Listenelemente werden durch ein Komma (,) getrennt.

Eine Liste mit zwei Strings definieren

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
-- Ergebnis: {"Mac DevEdge", "Einfach mal weiterdenken."}

Testen ob der Inhalt einer Variablen eine Liste ist

set myList to {"a", "b", "c", "d", "e"}
if class of myList is list then
    display dialog "Ist eine Liste" buttons ("OK") default button 1
else
    display dialog "Ist keine Liste" buttons ("OK") default button 1
end if

Eine Liste mit Strings und Zahlen definieren

set myList to {"Mac DevEdge", "Einfach mal weiterdenken.", 10, 23.5}
-- Ergebnis: {"Mac DevEdge", "Einfach mal weiterdenken.", 10, 23.5}

Eine Liste aus einen Variablenwert (string), einem String und Zahlen definieren

set myString to "Mac DevEdge - Einfach mal weiterdenken."
set myList to {myString, "Ein String", 10, 23.5}
-- Ergebnis: {"Mac DevEdge - Einfach mal weiterdenken.", "Ein String", 10, 23.5}

Eine Liste aus zwei Listen definieren

set myList1 to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myList2 to {10, 20, 30}
set myList to {myList1, myList2}
-- Ergebnis: {{"Mac DevEdge", "Einfach mal weiterdenken."}, {10, 20, 30}}

Zwei Listen kombinieren

set myList1 to {"Mac DevEdge"}
set myList2 to {"Einfach mal weiterdenken."}
set myList to myList1 & myList2
-- Ergebnis: {"Mac DevEdge", "Einfach mal weiterdenken."}

Einen Listeneintrag (item) am Anfang hinzufügen - Variante 1

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myList's beginning to "www.mac-devedge.de"
get myList
-- Ergebnis: {"www.mac-devedge.de", "Mac DevEdge", "Einfach mal weiterdenken."}

Einen Listeneintrag (item) am Anfang hinzufügen - Variante 2

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set beginning of myList to "www.mac-devedge.de"
get myList
-- Ergebnis: {"www.mac-devedge.de", "Mac DevEdge", "Einfach mal weiterdenken."}

Einen Listeneintrag (item) am Ende hinzufügen - Variante 1

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myList's end to "www.mac-devedge.de"
get myList
-- Ergebnis: {"Mac DevEdge", "Einfach mal weiterdenken.", "www.mac-devedge.de"}

Einen Listeneintrag (item) am Ende hinzufügen - Variante 2

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set end of myList to "www.mac-devedge.de"
get myList
-- Ergebnis: {"Mac DevEdge", "Einfach mal weiterdenken.", "www.mac-devedge.de"}

Einen Listeneintrag (item) ändern - Variante 1 (empfohlen)

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set item 2 of myList to "www.mac-devedge.de"
get myList
-- Ergebnis: {"Mac DevEdge", "www.mac-devedge.de"}

Einen Listeneintrag (item) ändern - Variante 2

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set 2nd item of myList to "www.mac-devedge.de"
get myList
-- Ergebnis: {"Mac DevEdge", "www.mac-devedge.de"}

Einen Listeneintrag (item) ändern - Variante 3

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set second item of myList to "www.mac-devedge.de"
get myList
-- Ergebnis: {"Mac DevEdge", "www.mac-devedge.de"}

Ersten Listeneintrag (item) bestimmen - Variante 1

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myFirstItem to the first item of myList
-- Ergebnis: "Mac DevEdge"

Ersten Listeneintrag (item) bestimmen - Variante 2

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myFirstItem to myList's beginning
-- Ergebnis: "Mac DevEdge"

Mittleren Listeneintrag (item) bestimmen

set myList to {"a", "b", "c"}
set myMiddleItem to myList's middle item
-- Ergebnis: "b"

set myList to {"a", "b", "c", "d"}
set myMiddleItem to myList's middle item
-- Ergebnis: "b"

set myList to {"a", "b", "c", "d", "e", "f"}
set myMiddleItem to myList's middle item
-- Ergebnis: "c"

Letzten Listeneintrag (item) bestimmen - Variante 1

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myLastItem to the last item of myList
-- Ergebnis: "Einfach mal weiterdenken."

Letzten Listeneintrag (item) bestimmen - Variante 2

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myLastItem to myList's end
-- Ergebnis: "Einfach mal weiterdenken."

Letzten Listeneintrag (item) bestimmen - Variante 3

set myList to {"Mac DevEdge", "Einfach mal weiterdenken."}
set myLastItem to item -1 of myList
-- Ergebnis: "Einfach mal weiterdenken."

Teilliste aus einer Liste extrahieren - Variante 1

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myNewList to items 3 through 6 of myList
-- Ergebnis: {"c", "d", "e", "f"}

Teilliste aus einer Liste extrahieren - Vatiante 2

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myNewList to items 3 thru 6 of myList
-- Ergebnis: {"c", "d", "e", "f"}

Reihenfolge der Listenelemente umkehren

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myNewList to reverse of myList
-- Ergebnis: {"j", "i", "h", "g", "f", "e", "d", "c", "b", "a"}

Anzahl der Listeneinträge zählen - Variante 1

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myQuantity to the length of myList
-- Ergebnis: 10

Anzahl der Listeneinträge zählen - Variante 2

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myQuantity to the count of myList
-- Ergebnis: 10

Zufälligen Listeneintrag (item) bestimmen

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myRandomItem to some item of myList
-- Ergebnis kann sein: "b"

Prüfen ob sich ein bestimmter Eintrag in einer Liste befinden - Variante 1

set myList to {"a", "b", "c", "d", "e"}
if "a" is in myList then
    display dialog "Der Buchstabe 'a' ist in der Liste enthalten."
end if

Prüfen ob sich ein bestimmter Eintrag in einer Liste befindet - Variante 2

set myList to {"a", "b", "c", "d", "e"}
if myList contains {"a"} then
    display dialog "Der Buchstabe 'a' ist in der Liste enthalten."
end if

Prüfen ob die Werte einer Liste - in gleicher Reigenfolge - in einer anderen Liste enthalten sind

set myList to {"a", "b", "c", "d", "e"}
-- In der nächsten Zeile kommt es auf die Reihenfolge an: {"a", "b"}
if myList contains {"a", "b"} then
    display dialog "Die Buchstaben 'a' und 'b' sind in der Liste enthalten." buttons ¬
        ("OK") default button 1
end if

set myList to {"a", "b", "c", "d", "e"}
-- In der nächsten Zeile kommt es auf die Reihenfolge an: {"b", "a"}
if myList contains {"b", "a"} then
    display dialog "Die Buchstaben 'b' und 'a' sind in der Liste in " & ¬
        "dieser Reihenfolge enthalten." buttons ¬
        ("OK") default button 1
else
    display dialog "Die Buchstaben 'b' und 'a' sind in der Liste in " & ¬
        "dieser Reihenfolge nicht enthalten." buttons ¬
        ("OK") default button 1
end if

String in eine Liste umwandeln, wobei der gesamte String zu einem einzigen Listeneintrag (item) wird

set myString to "Mac DevEdge - Einfach mal weiterdenken."
set myList to myString as list
-- Ergebnis: {"Mac DevEdge - Einfach mal weiterdenken."}

String in eine Liste umwandeln, wobei jedes Zeichen des Strings ein einzelner Listeneintrag (item) wird

set myString to "Mac DevEdge"
set myList to every character of myString
-- Ergebnis: {"M", "a", "c", " ", "D", "e", "v", "E", "d", "g", "e"}

String in eine Liste umwandeln, wo bei jedes Wort des Strings ein einzelner Listeneintrag (item) wird

set myString to "Einfach mal weiterdenken"
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to " "
set myList to every text item of myString
set AppleScript's text item delimiters to oldDelimiters
get myList
-- Ergebnis: {"Einfach", "mal", "weiterdenken"}

Liste in einen String umwandeln

set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set myString to myList as string
-- Ergebnis: "a b c d e f g h i j"
Liste in einen String umwandeln, wobei man das Trennzeichen selbst definiert:
set myList to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to " - "
set myString to myList as string
set AppleScript's text item delimiters to oldDelimiters
get myString
-- Ergebnis: "a - b - c - d - e - f - g - h - i - j"

Routinen (handler)

Doppelte Listeneinträge entfernen - Variante 1 (Reihenfolge wird beibehalten)

on list_unique(the_list)
   
    -- Neue Liste für die Rückgabe definieren
    set my_new_list to {}
   
    -- Jedes Item der bestehenden Liste durchlaufen
    repeat with counter from 1 to count the_list
       
        -- Neu zu setzenden Listeneintrag definieren
        set new_item to item counter of the_list
       
        -- Den neuen Listeneintrag nur dann an das Ende der
        -- neuen Liste hinzufügen, wenn er noch nicht enthalten ist
        considering case
            if new_item is not in my_new_list then
                set end of my_new_list to new_item
            end if
        end considering
       
    end repeat
   
    -- Neue Liste zurückgeben
    return my_new_list
   
end list_unique

--
-- Anwendungsbeispiele
--

set my_list to {"a", "b", 10, "c", "a", "c", 10}
set my_list to list_unique(my_list)
-- Ergebnis: {"a", "b", 10, "c"}

set my_list to {"a", "b", 10, "c", "a", "C", 10}
set my_list to list_unique(my_list)
-- Ergebnis: {"a", "b", 10, "c", "C"}
--
-- Der Listeneintrag "C" wurde aus der Liste nicht gelöscht,
-- da der Handler "list_unique" case sensitive arbeitet.

Doppelte Listeneinträge entfernen - Variante 2 (Reihenfolge wird nicht beibehalten)

on list_unique(the_list)
   
    -- Neue Liste für die Rückgabe definieren
    set new_list to {}
   
    -- Jedes Item der bestehenden Liste durchlaufen
    repeat until the_list = {}
       
        -- Ersten Listeneintrag holen
        set first_item to (first item of the_list)
       
        -- Original-Liste mit dem Rest (ausser ersten Eintrag)
        set the_list to (rest of the_list)
       
        -- Den neuen Listeneintrag nur dann an das Ende der
        -- neuen Liste hinzufügen, wenn er noch nicht enthalten ist
        considering case
            if first_item is not in the_list then
                set new_list to new_list & {first_item}
            end if
        end considering
    end repeat
   
    -- Neue Liste zurückgeben
    return new_list
   
end list_unique

--
-- Anwendungsbeispiel
--

set my_list to {"a", "b", 10, "c", "a", "C", 10}
set my_list to list_unique(my_list)
-- Ergebnis: {"b", "c", "a", "C", 10}

Eintrag / Einträge aus Liste entfernen

on list_delete_items(the_list, the_items)
   
    -- Neue Liste für die Rückgabe definieren
    set my_new_list to {}
   
    -- Jedes Item der bestehenden Liste durchlaufen
    repeat with counter from 1 to count the_list
       
        -- Neu zu setzenden Listeneintrag definieren
        set new_item to item counter of the_list
       
        -- Der neue Listeneintrag wird nur dann an das Ende der
        -- neuen Liste hinzugefügt, wenn er nicht in der "Ausschlussliste" enthalten ist.
        considering case
            if new_item is not in the_items then
                set end of my_new_list to new_item
            end if
        end considering
       
    end repeat
   
    -- Neue Liste zurückgeben
    return my_new_list
   
end list_delete_items

--
-- Anwendungsbeispiele
--

set my_list to {1, 2, 3, 4, "Mac DevEdge", 5, 6, 7, 8, 9}
set my_list to list_delete_items(my_list, {"Mac DevEdge"})
-- Ergebnis: {1, 2, 3, 4, 5, 6, 7, 8, 9}

set my_list to {1, 2, 3, 4, "Mac DevEdge", 5, 6, 7, 8, 9}
set my_list to list_delete_items(my_list, {"mac devedge"})
-- Ergebnis: {1, 2, 3, 4, "Mac DevEdge", 5, 6, 7, 8, 9}
--
-- "mac devedge" wurde aus der Liste nicht gelöscht,
-- da der Handler "list_delete_items" case sensitive arbeitet.

set my_list to {1, 2, 3, 4, "Mac", 5, 6, "DevEdge", 7, 8, 9}
set my_list to list_delete_items(my_list, {"Mac", "DevEdge"})
-- Ergebnis: {1, 2, 3, 4, 5, 6, 7, 8, 9}