Digamos que mi portapapeles es "nombre de teléfono de correo electrónico" y cualquier texto y número al azar.
¿Se pueden separar y agregar las palabras en una lista?
No te das cuenta, pero has respondido tu propia pregunta.
TL; DR
Diga que su portapapeles contiene la cadena "Kevin stackexchange.com 124098"
. Separa esto en una lista de palabras como esta:
words of (the clipboard) --> {"Kevin", "stackexchange.com", "124098"}
Puede leer más sobre esta característica integrada de AppleScript a continuación, donde he dado una explicación detallada, incluyendo por qué, lamentablemente, esto no será tan efectivo si se trata de una dirección de correo electrónico:
words of "[email protected]" --> {"Kevin", "example.com"}
Por lo tanto, deberás recordar restaurar el símbolo "@"
eliminado más adelante; o, como sugirió, use text item delimiters
establecido en un carácter de espacio.
Información detallada: text item delimiters
vs words
Los objetos AppleScript text
se componen de word
y character
elementos que se subdividen entre sí en los componentes básicos de cualquier cadena: text
se subdivide en words
y / o %código%; a characters
se subdivide en word
.
Además, el characters
subdivide words
a intervalos marcados por espacios en blanco de cualquier longitud, que es mucho más conveniente que text
, que dividirá una cadena en cada aparición individual de un delimitador específico.
Por ejemplo, estableciendo text item delimiters
para el carácter text item delimiters
, y aplicándolo a una frase de dos palabras con tres espacios entre ellos, terminarás con esto:
text items of "foo bar" --> {"foo", "", "", "bar"}
Sin embargo, obtener en su lugar el space
que conforma la cadena evita tener que lidiar con los elementos de la lista de cadenas vacías:
words of "foo bar" --> {"foo", "bar"}
Además, como words
, text items
de un objeto words
subdividirá la cadena de forma natural en una lista de elementos individuales.
Para completar, rápidamente demostraré cómo text
descompondrá una cadena:
characters of "foo" --> {"f", "o", "o"}
characters of "foo bar" --> {"f", "o", "o", " ", " ", " ", "b", "a", "r"}
Se requiere un poco de precaución al descomponer una cadena en characters
, creyendo que funciona de manera idéntica (o lo suficientemente cerca) a un delimitador words
. No lo hace Hay un conjunto definido de caracteres que se consideran "caracteres de palabras" y un conjunto de caracteres que no lo son. Los "caracteres de palabras" son cualquier carácter que, cuando se agrupan, se consideran formadores de palabras. Si aparece un carácter que no sea de palabra, la palabra se considera dividida en dos palabras distintas en ese carácter.
Los caracteres de las palabras incluyen básicamente las letras A-Z y a-z (y cualquier variante acentuada), los números 0-9, el período ( space
) y el guión bajo ( .
). Entonces _
es una palabra, y "tH1s"
. Sin embargo, "this_is_a_single_word.123"
y, contraintuitivamente para mí, "this#is%four words"
se consideran dos palabras (el guión no es un carácter de palabra).
Otros caracteres que no son palabras incluyen obviamente el espacio; o cualquier espacio en blanco para el caso. Además de cualquier símbolo que pueda escribir con su teclado que no se incluyó en la lista de caracteres de la palabra, excepto el signo de dólar ( "over-achieving"
), que me molesta dejar ahora para mencionar solo para reflejar cómo molesto es que se considera al azar un carácter de palabra:
words of "hello#$&world" --> {"hello", "$", "world"}