Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Liste in Liste auflösen

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Russe
•-->
•-->


Anmeldedatum: 03.01.2003
Beiträge: 45

BeitragVerfasst am: 17.07.2009 - 22:12    Titel: Liste in Liste auflösen Antworten mit Zitat

Hallo Forum,

ich habe hier eine Liste aus Strings, die wiederum Teil einer anderen Liste ist, es sind nur Strings vorhanden. Im Internet habe ich nach einer einfachen Lösung gesucht diese verschachtelte Liste plattzuklopfen, habe da auch einiges dazu gefunden.

Nur ein Vorschlag kann ich mir nicht erklären, aber er funktioniert. Nun würde ich gerne wissen warum

Code:
set aList to {{"item 1", "item 2", {"item 1", "item 2", "item 3"}}, {"item 1", "item 2", "item 3"}, "item 3"}

set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"????"}
set aString to aList as text
set aList to text items of aString
set AppleScript's text item delimiters to oldDelims
aList


Das Ergebnis ist dann
{"item 1", "item 2", "item 1", "item 2", "item 3", "item 1", "item 2", "item 3", "item 3"}

Was zum Henker bedeutet hier {"????"}, kann mir das einer von euch erklären?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 17.07.2009 - 22:40    Titel: Antworten mit Zitat

es ist offensichtlich völlig egal, was du als delimiter einsetzt, ich weiß nur leider auch noch nicht, warum:

set aList to {{"item 1", "item 2", {"item 1", "item 2", "item 3"}}, {"item 1", "item 2", "item 3"}, "item 3"}

set text item delimiters to "a"
set aString to aList as text
set aList to text items of aString
set text item delimiters to ""
aList --> {"item 1", "item 2", "item 1", "item 2", "item 3", "item 1", "item 2", "item 3", "item 3"}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 17.07.2009 - 23:25    Titel: Antworten mit Zitat

interessanter trick. so wird doch einiges klarer:

set aList to {{"item 1", "item 2", {"item 1", "item 2", "item 3"}}, {1256, "item 2", "item 3"}, "item 3"}

set text item delimiters to "____"
set aString to aList as text
set aList to text items of aString
set text item delimiters to ""
aString --> "item 1____item 2____item 1____item 2____item 3____1256____item 2____item 3____item 3"
aList --> {"item 1", "item 2", "item 1", "item 2", "item 3", "1256", "item 2", "item 3", "item 3"}

set text item delimiters to "t"
set aString to aList as text
set aList to text items of aString
set text item delimiters to ""
aString --> "item 1titem 2titem 1titem 2titem 3t1256titem 2titem 3titem 3"
aList --> {"i", "em 1", "i", "em 2", "i", "em 1", "i", "em 2", "i", "em 3", "1256", "i", "em 2", "i", "em 3", "i", "em 3"}

bei der wandlung liste2string wird der delimiter immer zwischen die elemente gesetzt. bei der wandlung des so entstanden strings in seine text items wird eben an den stellen gestrennt, an denen der delimiter vorkommt. und wenn der delimiter innerhalb eines elementes der ursprünglichen liste enhalten war/ist, dann wird eben auch dort getrennt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Russe
•-->
•-->


Anmeldedatum: 03.01.2003
Beiträge: 45

BeitragVerfasst am: 17.07.2009 - 23:54    Titel: Antworten mit Zitat

Hallo iScript,

oh, auf so was muss man erst einmal kommen. Danke, jetzt habe ich es auch kapiert.
Wenn das bei mir funktionieren soll dann muss ich einfach als delimiter etwas setzen das unter Garantie nicht in meinen Listen vorkommt.

Vielen Dank noch mal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 18.07.2009 - 00:16    Titel: Antworten mit Zitat

ich bedanke mich für die frage/den tipp. wo hast du das ding her? kannst du mal die quelle liefern? danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Skeeve
•---->
•---->


Anmeldedatum: 20.04.2006
Beiträge: 1068

BeitragVerfasst am: 18.07.2009 - 06:48    Titel: Antworten mit Zitat

Die Methode hat aber den Nachteil, daß alles zu Strings wird:
Code:

set aList to {{pi, 4711, {"item 1", "item 2", "item 3"}}, {"item 1", "item 2", "item 3"}, "item 3"}

set text item delimiters to "<MUPSELPUPSEL>"
set aString to aList as text
log aString
set aList to text items of aString
set text item delimiters to ""
aList --> {"3,14159265359", "4711", "item 1", "item 2", "item 3", "item 1", "item 2", "item 3", "item 3"}


Will man das nicht, ist's besser, eine rekursive flatten funktion zu verwenden:
Code:

set aList to {{pi, 4711, {"item 1", "item 2", "item 3"}}, {"item 1", "item 2", "item 3"}, "item 3"}

set aList to flatten(aList)
aList --> {3.14159265359, 4711, "item 1", "item 2", "item 3", "item 1", "item 2", "item 3", "item 3"}

to flatten(aList)
   if class of aList is not list then return aList
   set reslt to {}
   repeat with elt in aList
      set reslt to reslt & flatten(elt)
   end repeat
   return reslt
end flatten


_________________
"All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Russe
•-->
•-->


Anmeldedatum: 03.01.2003
Beiträge: 45

BeitragVerfasst am: 18.07.2009 - 16:11    Titel: Antworten mit Zitat

Skeeve hat Folgendes geschrieben:
Die Methode hat aber den Nachteil, daß alles zu Strings wird …


Das spielt bei mir keine Rolle, denn ich habe nur Strings und brauch auch am Schluss nur Strings. Deine Beispiele werde ich aber auch noch ausprobieren bzw. kopieren, ich glaube ich habe schon was in Sicht bei dem ich auch Listen flachklopfen muss, da würde ich dann aber Zahlen benötigen.
Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Russe
•-->
•-->


Anmeldedatum: 03.01.2003
Beiträge: 45

BeitragVerfasst am: 18.07.2009 - 16:14    Titel: Antworten mit Zitat

iScript hat Folgendes geschrieben:
ich bedanke mich für die frage/den tipp. wo hast du das ding her? kannst du mal die quelle liefern? danke.


Das habe ich bei Apple Mailing Lists gefunden.
Hier ist der Anfang der Diskussion:
http://lists.apple.com/archives/Applescript-users/2009/Jan/msg00275.html

Und hier ist das Posting von dem ich diesen Code habe:
http://lists.apple.com/archives/Applescript-users/2009/Jan/msg00291.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Claudia69
•->
•->


Anmeldedatum: 02.06.2009
Beiträge: 1

BeitragVerfasst am: 20.07.2009 - 06:44    Titel: Antworten mit Zitat

Hallo Russe,

vielen Dank für Deine Frage und vielen Dank für Eure Antworten. Toll das es Foren gibt. Habe den Thread über goo... gefunden. Hatte mir eine ähnliche Frage gestellt - nun bin ich wieder ein bissle schlauer.

Grüße aus Berlin
Claudia
_________________
Hauptsache die Haare liegen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter