Nehmen wir an, ich habe einen Dateinamen, den ich wie folgt in einzelne Teile zerlege:
nameWords = Words(name, "_")
Nehmen wir an, ich möchte aus den ersten fünf Wörtern des Originalnamens einen Kurznamen machen:
shortName = Concat Items( nameWords[{1, 2, 3, 4, 5}], "_" );Alles funktioniert einwandfrei, solange ich Namen in dem Format erhalte, das ich erwarte, dh mehr als fünf Wörter im Namen.
Aber sobald ich einen Namen wie „aaa_bbb_ccc“ erhalte (ziemlich unerwartet, aber völlig real), erhalte ich beim Indizieren in meiner Liste eine Fehlermeldung.
Frage: Wie indiziere ich nicht nach 5, sondern nach den kleinsten von 5 und den N Elementen der Liste? Anstatt eine IF-Anweisung zu schreiben, um herauszufinden, was weniger ist?
Sie könnten auch verwenden Links()
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), "_"));
Los geht's:
shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])