Trova l'ultima sequenza di cifre consecutive in stringa con Applescript

-2

Nel mio script ho stringhe come G014_1998_24.jpg o G024_2006_08.jpg . Da queste stringhe ho bisogno di estrarre le ultime cifre consecutive tramite Applescript. Quindi nel mio esempio di stringhe avrei bisogno di recuperare le sequenze 24 o 08 (quest'ultimo preferibilmente con lo zero iniziale).

C'è un modo per farlo con un codice di applicazione?

Modifica: le stringhe potrebbero anche avere questo aspetto: G014_1998.jpg , G014_1998_A.jpg , G014_1998_AB.jpg ecc. (in questi casi lo script deve sempre recuperare 1998 ). Quindi sto davvero cercando l'ultima cifra e non posso contare sulla posizione di queste cifre, dato che non posso prevedere le posizioni.

    
posta mdomino 18.01.2018 - 00:06
fonte

2 risposte

1

Due possibili metodi:

Pure AppleScript

    set alphabet to "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    set the text item delimiters of AppleScript to ¬
        {space} & characters of the alphabet & {".", "_"}
    set a to text items of "G024_2006_08.jpg" as text
    set b to text items of "G014_1998_AB.jpg" as text

    get last word of a --> returns "08"
    get last word of b --> returns "1998"

Guida di Bash

Se i nomi dei file sono ancora più complessi, usa do shell script e una corrispondenza di espressioni regolari:

    set filename to "G014_1998_AB.jpg"

    return do shell script (["echo ", filename, ¬
        " | egrep -o -e '\d+' | tail -1"] as text)

    --> returns "1998"

Grazie a @ user3439894 per aver suggerito di implementare tail come parte dello script della shell invece di usare il comando get last paragraph of di AppleScript. È un po 'più semplice.

    
risposta data 18.01.2018 - 13:00
fonte
1

Funziona per me usando l'ultima versione di Sierra

property myStrings : {"G014_1998_24.jpg", "G024_2006_08.jpg"}

set strippedStrings to {}

repeat with i from 1 to number of items in myStrings
    set this_item to item i of myStrings
    set end of strippedStrings to items -5 thru -6 of this_item as string
    -- uncomment next line if u prefer integers returned instead (wont retain leading zero's)
    -- set end of strippedStrings to items -5 thru -6 of this_item as string as integer
end repeat

Se vuoi essere in grado di ordinare l'elenco in ordine crescente, questa versione dello script utilizza l'aggiunta di script SATIMAGE Aggiunta di script

property myStrings : {"G014_1998_24.jpg", "G024_2006_08.jpg", "G024_2006_13.jpg"}
property sortedStrippedStrings : {}

set strippedStrings to {}

repeat with i from 1 to number of items in myStrings
    set this_item to item i of myStrings
    set end of strippedStrings to items -5 thru -6 of this_item as string
end repeat
-- Uses SATIMAGE scripting addition to sort list ascending 
set sortedStrippedStrings to sortlist strippedStrings with ascending
    
risposta data 18.01.2018 - 00:39
fonte

Leggi altre domande sui tag