1 votos

AppleScript - cómo buscar una lista de artículos que contengan números

Estoy escribiendo un AppleScript que contiene una lista de elementos que se mezclan entre el texto y los números. Me gustaría filtrar esta lista sólo a los elementos que contienen números.

No he sido capaz de averiguarlo por mi cuenta y hasta ahora no he sido capaz de encontrar cualquier sugerencias útiles en línea.

Aquí está mi lista:

{"table", "s01e01", "nam", "aces", "linear", "20160430", "01", "textless", "3840x2160", "000011", "jpg"}

Y yo sólo quiero la búsqueda para la devolución de estos:

{"s01e01", "20160430", "01", "3840x2160", "000011"}

Por el bien de este post, vamos a decir que la lista se almacena en milista.

He intentado:

set numberItems to items of myList which contain integers

pero eso es un gran no ir!

1voto

qarma Puntos 71

Esto no parece muy eficiente manera de hacerlo, pero yo creo que es un AppleScript problema en lugar de mi falta de creatividad (puedo estar equivocado):

    set mylist to {"table", "s01e01", "nam", "aces", "linear", "20160430", "01", "textless", "3840x2160", "000011", "jpg"}

    repeat with str in mylist
        set str to the contents of str

        repeat with i from 0 to 9
            if str contains i then
                set end of mylist to str
                exit repeat
            end if
        end repeat

        set mylist to the rest of mylist
    end repeat

    return mylist

Usted podría hacer mucho más correctamente con un poco de secuencia de comandos de shell:

    set mylist to {"table", "s01e01", "nam", "aces", "linear", "20160430", "01", "textless", "3840x2160", "000011", "jpg"}

    set the text item delimiters to space

    do shell script "grep -o '\\S*\\d\\S*' <<< " & the quoted form of (mylist as text)

    return the paragraphs of the result 

EDIT: me habló un poco demasiado pronto sobre mi (falta de creatividad), como me acaba de llegar con esta ligeramente resbaladizo método de hacerlo con AppleScript. En teoría, debería ser más rápido que el primer método también:

    set mylist to {"table", "s01e01", "nam", "aces", "linear", "20160430", "01", "textless", "3840x2160", "000011", "jpg"}

    set the text item delimiters to {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

    repeat with str in mylist
        set str to the contents of str as text

        if str ≠ the text items of str as text then ¬
            set the end of mylist to str

        set mylist to the rest of mylist
    end repeat

    return mylist

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X