In AppleScript, qual è il modo più semplice per rimuovere tutta la punteggiatura da una stringa?

5

Dispongo di un servizio di automazione composto da una singola azione "Esegui AppleScript" . Il servizio riceve text selezionato in any application .

Il Servizio incorpora questo testo selezionato in un formato URL predeterminato. Il servizio quindi apre l'URL appena assemblato in una nuova scheda in una finestra del browser Web.

Ecco una stringa che il Servizio potrebbe ricevere:

My Plant's Dead! (But, Who Cares? I Have 12 Plants.)

Voglio utilizzare AppleScript per rimuovere ogni simbolo di punteggiatura esistente nella stringa, compresi gli spazi. Ho anche bisogno che la stringa venga convertita in tutti i caratteri minuscoli. I numeri non devono essere rimossi dalla stringa.

Quindi, la stringa desiderata è:

myplantsdeadbutwhocaresihave12plants

Capisco che posso ottenere l'effetto desiderato scrivendo una singola dichiarazione text item delimiters per ogni possibile simbolo di punteggiatura e per 26 lettere maiuscole. Potrei utilizzare una % sub-routine% di% per rendere questo metodo un po 'più ordinato.

C'è un modo più semplice o più breve per realizzare questo effetto in AppleScript, invece di usare decine di blocchi replace_characters ? Ad esempio, una riga di codice che riduce una stringa in lettere?

So che gli altri linguaggi di programmazione hanno una scorciatoia "strip punteggiatura", motivo per cui lo chiedo.

Questa è, in sostanza, una domanda "Code Golf" specifica per AppleScript.

    
posta rubik's sphere 13.04.2017 - 02:59
fonte

1 risposta

3

Prova quanto segue:

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

Restituisce: myplantsdeadbutwhocaresihave12plants

tr comandi spiegati:

  • tr -dc '[:alnum:]' elimina tutti i caratteri non alfanumerici (compreso lo spazio bianco).
  • tr '[:upper:]' '[:lower:]' converte tutti i caratteri maiuscoli in caratteri minuscoli.

Vedi la pagina man per tr .

    
risposta data 13.04.2017 - 05:24
fonte

Leggi altre domande sui tag