Ich habe einen Automator-Dienst, der aus einer einzigen Aktion „AppleScript ausführen“ besteht . Der Service wird text
in 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 delimiters
Ich 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_characters
Unterroutine 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 delimiters
Blö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.
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
tr
Befehle 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
.
Rubiks Sphäre
Benutzer3439894
alnum
zualbum
, also ist es jetzt richtig.