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