He aquí una implementación alternativa que será más rápida y mucho más compacta:
set L to {"1", "", "", "apple", "acda", "", "3454", "ImportantStuff", ¬
"important1", "important2", "NotImportantStuff", "2", "", "efrg"}
set {i, j} to {1, -1}
tell L
repeat until item i = "ImportantStuff"
set i to i + 1
end repeat
repeat until item j = "NotImportantStuff"
set j to j - 1
end repeat
end tell
return items (i + 1) thru (j - 1) of L
-- OR: set myVar to items (i + 1) thru (j - 1) of L
No itera a través de cada elemento de la lista, ya que eso hace perder tiempo. En lugar de eso, nos centramos desde la izquierda para encontrar el índice donde empieza lo importante; luego nos centramos desde la derecha para encontrar el índice donde termina lo importante.
A continuación, basta con recuperar los elementos comprendidos entre esos dos índices.
Método 2: Manipulación de texto
De forma menos general, si sabe que su lista sólo contiene elementos de texto simple, puede utilizar text item delimiters
para convertir la lista en una cadena y manipularla:
set my text item delimiters to linefeed
set L to {"1", "", "", "apple", "acda", "", "3454", "ImportantStuff", "important1", ¬
"important2", "important3", "NotImportantStuff", "2", "", "efrg"}
set textList to L as text
set my text item delimiters to {"ImportantStuff", "NotImportantStuff"}
set importantStuffText to text item 2 of textList
La primera serie de text item delimiters
transforman la lista en una cadena en la que cada elemento de la lista ocupa una sola línea de la cadena. El segundo conjunto de text item delimiters
divide la cadena en los dos lugares donde se encuentran las palabras clave. Esto nos permite recuperar los bits intermedios, que, tal como está, devolverá:
"
important1
important2
important3
"
Si hay varias apariciones de las palabras clave, lo importante serán todas las que sean pares. text items
.
Para volver a convertir la cadena en una lista, puedes hacer lo siguiente:
set importantStuffList to paragraphs 2 thru -2 of importantStuffText
--> {"important1", "important2", "important3"}