En AppleScript, ¿cuál es la forma más fácil de eliminar todas las puntuaciones de una cadena?

5

Tengo un servicio de Automator que se compone de una única acción "Ejecutar AppleScript" . El servicio recibe seleccionado text en any application .

El Servicio incorpora este texto seleccionado en un formato de URL predeterminado. El Servicio luego abre la URL recién ensamblada en una nueva pestaña en una ventana del navegador web.

Aquí hay una cadena que el Servicio podría recibir:

  

¡Mi planta está muerta! (Pero, ¿a quién le importa? Tengo 12 plantas.)

Quiero usar AppleScript para eliminar todos y cada uno de los símbolos de puntuación que existen en la cadena, incluidos los espacios. También necesito que la cadena se convierta a todos los caracteres en minúscula. Los números no deben eliminarse de la cadena.

Entonces, la cadena deseada es:

myplantsdeadbutwhocaresihave12plants

Comprendo que puedo lograr el efecto deseado al escribir una declaración individual text item delimiters para cada posible símbolo de puntuación y para 26 letras mayúsculas. Podría usar una sub-rutina replace_characters para hacer este método un poco más limpio.

¿Existe una forma más fácil o más corta de lograr este efecto en AppleScript, en lugar de usar docenas de bloques text item delimiters ? Por ejemplo, ¿una línea de código que reduce una cadena a letras?

Sé que otros lenguajes de programación tienen un método abreviado de "puntuación", por lo que pregunto.

Esto es, esencialmente, una pregunta "Code Golf" específica de AppleScript.

    
pregunta rubik's sphere 13.04.2017 - 02:59

1 respuesta

3

Prueba lo siguiente:

set stringToConvert to "My Plant's Dead! (But, Who Cares? I Have 12 Plants.)"
set returnedString to do shell script "echo " & quoted form of stringToConvert & " | tr -dc '[:alnum:]' | tr '[:upper:]' '[:lower:]'"

Devuelve: myplantsdeadbutwhocaresihave12plants

Se explicaron los comandos tr :

  • tr -dc '[:alnum:]' elimina todos los caracteres no alfanuméricos (incluido el espacio en blanco).
  • tr '[:upper:]' '[:lower:]' convierte todos los caracteres en mayúsculas en minúsculas.

Consulte la página del manual para tr .

    
respondido por el user3439894 13.04.2017 - 05:24

Lea otras preguntas en las etiquetas