Diciamo che ho un nome di file che analizzo in parti separate in questo modo:
nameWords = Words(name, "_")
Diciamo che voglio creare un nome breve dalle prime cinque parole del nome originale:
shortName = Concat Items( nameWords[{1, 2, 3, 4, 5}], "_" );Tutto funziona bene mentre ricevo i nomi nel formato che mi aspetto, cioè più di cinque parole nel nome.
Ma non appena ottengo un nome come "aaa_bbb_ccc" (abbastanza inaspettato, ma totalmente reale) ottengo un errore durante l'indicizzazione nella mia lista.
Domanda: come posso indicizzare non 5, ma il minimo di 5 e gli N elementi dell'elenco? Piuttosto che scrivere un'istruzione IF per capire quale è inferiore?
Potresti anche usare Sinistra()
Names Default To Here(1);
a = "1_2_3_4_5_6_7_8";
b = "1_2_3";
Show(Concat Items(Left(Words(a, "_"), 5), "_"));
Show(Concat Items(Left(Words(b, "_"), 5), "_"));
Ecco qua:
shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])