Was ist der einfachste Weg, um in AppleScript alle Satzzeichen aus einer Zeichenfolge zu entfernen?

Ich habe einen Automator-Dienst, der aus einer einzigen Aktion „AppleScript ausführen“ besteht . Der Service wird textin ausgewählt any application.

Der Dienst fügt diesen ausgewählten Text in ein vordefiniertes URL-Format ein. Der Dienst öffnet dann die neu zusammengestellte URL in einem neuen Tab in einem Webbrowser-Fenster.

Hier ist eine Zeichenfolge, die der Dienst möglicherweise erhält:

Meine Pflanze ist tot! (Aber wen interessiert das? Ich habe 12 Pflanzen.)

Ich möchte AppleScript verwenden, um alle Satzzeichen zu entfernen, die in der Zeichenfolge vorhanden sind, einschließlich Leerzeichen. Ich brauche auch die Zeichenfolge, die in alle Kleinbuchstaben konvertiert werden soll. Zahlen sollten nicht aus der Zeichenfolge entfernt werden.

Die gewünschte Zeichenfolge lautet also:

myplantsdeadbutwhocaresihave12plants

text item delimitersIch verstehe, dass ich den gewünschten Effekt erzielen kann, indem ich für jedes mögliche Satzzeichen und für 26 Großbuchstaben eine eigene Aussage schreibe . Ich könnte eine replace_charactersUnterroutine verwenden , um diese Methode etwas übersichtlicher zu gestalten.

Gibt es eine einfachere oder kürzere Möglichkeit, diesen Effekt in AppleScript zu erzielen, anstatt Dutzende von text item delimitersBlöcken zu verwenden? Zum Beispiel eine Codezeile, die eine Zeichenfolge auf Buchstaben reduziert?

Ich weiß, dass andere Programmiersprachen eine Abkürzung für "Strip Interpunktion" haben, weshalb ich frage.

Dies ist im Wesentlichen eine AppleScript-spezifische „Code Golf“ -Frage.

Antworten (1)

Versuche Folgendes:

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

Es gibt zurück:myplantsdeadbutwhocaresihave12plants

trBefehle erklärt:

  • tr -dc '[:alnum:]'löscht alle nicht alphanumerischen Zeichen (einschließlich Leerzeichen).
  • tr '[:upper:]' '[:lower:]'wandelt alle Großbuchstaben in Kleinbuchstaben um.

Siehe die Manpage für tr.

Danke, dass Sie mich auf den Zahlenpunkt aufmerksam gemacht haben; Das hatte ich ganz vergessen.
@rubiks Kugel, Auto-Korrektur geändert alnumzu album, also ist es jetzt richtig.