applescript: agregar contenido del portapapeles a la lista

0

¿Puedo crear una lista desde el portapapeles?

Digamos que mi portapapeles es 'nombre de teléfono de correo electrónico y cualquier número aleatorio de texto

¿Se pueden separar y agregar las palabras en una lista?

También el elemento puede ser texto y números, pero supongo que la mejor manera sería hacer un delimitador de texto por espacio.

    
pregunta Kevin 07.12.2018 - 15:41

1 respuesta

2
  

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"}
    
respondido por el CJK 08.12.2018 - 01:01

Lea otras preguntas en las etiquetas