5 votes

En AppleScript, quel est le moyen le plus simple de supprimer toute la ponctuation d'une chaîne de caractères ?

J'ai un service Automator qui est composé d'un seul "Exécuter AppleScript" action. Le Service reçoit des text sur any application .

Le service incorpore ce texte sélectionné dans un format URL prédéterminé. Le service ouvre ensuite l'URL nouvellement assemblé dans un nouvel onglet de la fenêtre d'un navigateur web.

Voici une chaîne de caractères que le Service pourrait recevoir :

Ma plante est morte ! (Mais, qui s'en soucie ? J'ai 12 plantes.)

Je veux utiliser AppleScript pour supprimer tous les symboles de ponctuation qui existent dans la chaîne, y compris les espaces. J'ai également besoin que la chaîne soit convertie en tous les caractères minuscules. Les chiffres ne doivent pas être supprimés de la chaîne.

Donc, la chaîne souhaitée est :

myplantsdeadbutwhocaresihave12plants

Je comprends que je peux obtenir l'effet désiré en écrivant une lettre individuelle. text item delimiters pour tous les symboles de ponctuation possibles et pour 26 lettres majuscules. Je pourrais utiliser un replace_characters sous-routine pour rendre cette méthode un peu plus propre.

Existe-t-il un moyen plus simple ou plus court d'obtenir cet effet en AppleScript, plutôt que d'utiliser des dizaines de fichiers text item delimiters des blocs ? Par exemple, une ligne de code qui réduit une chaîne de caractères en lettres ?

Je sais que d'autres langages de programmation disposent d'un raccourci "supprimer la ponctuation", c'est pourquoi je pose la question.

C'est, essentiellement, un AppleScript spécifique "Code Golf" question.

3voto

user3439894 Points 52496

Essayez ce qui suit :

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:]'"

Il revient : myplantsdeadbutwhocaresihave12plants

tr Les commandes ont été expliquées :

  • tr -dc '[:alnum:]' supprime tous les caractères non alphanumériques (y compris les espaces blancs).
  • tr '[:upper:]' '[:lower:]' convertit tous les caractères majuscules en caractères minuscules.

Voir la page de manuel de tr .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X