0 votos

Applescript para filtrar el portapapeles

Digamos que tengo esto en mi portapapeles :

************TH4F    fsdfssdggg0878  Ex.US   Unknown 0   $100.00 05/24/17 04:40  No Bonus    
************TH4F    fsdfssdggg0878  Un.UK   Unknown 0   $50.00  05/20/17 04:44  No Bonus    

¿que sólo puedo guardar el total y añadirlo en una lista y lo mismo para la fecha?

Estoy un poco atascado en el script por ahora :

repeat with i in (get (the clipboard)'s text items)
    return i
end repeat

2voto

qarma Puntos 71

Realmente no se puede (o no se debe) utilizar text items sin definir primero su text item delimiters .

Si cada campo del texto formateado está separado por un carácter de tabulación, la tarea es trivial:

set my text item delimiters to tab

set cbTotals to {}
set cbDates to {}

repeat with row in the paragraphs of (the clipboard as text)
    set the end of cbTotals to text item 6 of the row
    set the end of cbDates to text item 7 of the row
end repeat

Si los campos están, como aparecen aquí, separados por un número variable de espacios, entonces uno podría estar tentado de contar cada espacio entre cada campo, y enumerar los elementos de texto de la misma manera que acabamos de hacer arriba. Sin embargo, esto es poco práctico y, lo que es más importante, no es una forma muy sólida de abordar esto en un contexto general, porque el contenido de sus datos podría cambiar ligeramente en algún momento. Por ejemplo, puede que en una ocasión seleccione el texto al ras del inicio de la línea, mientras que en otra ocasión, sobre-seleccione e incluya algún espacio en blanco al principio.

Una forma de garantizar la coherencia es ocuparse primero de los espacios:

set my text item delimiters to space

set |cb₀| to the text items of (the clipboard as text)

repeat with cbField in |cb₀|
    if cbField's contents = "" then set cbField's contents to missing value
end repeat

set cb to the strings in |cb₀| as text

Ahora cb contiene una versión delimitada homogéneamente de los datos del portapapeles, donde cada campo está separado por un solo carácter de espacio. Ahora podemos emplear la misma técnica de antes, y obtener los text items . Sin cambiar su text item delimiters que en la actualidad se establece en space :

set cbTotals to {}
set cbDates to {}

repeat with row in the paragraphs of cb
    set the end of cbTotals to text item 6 of the row
    set the end of cbDates to text item 7 of the row
end repeat

0 votos

Gracias, lo estoy probando ahora, parece perfecto

1 votos

Sólo había que conseguir una variable funky, |cb| En el código ahora, no lo hiciste. :) +1 por una buena respuesta de todos modos.

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