Let's say I have a file name that I parse into separate parts like so:
nameWords = Words(name, "_")
Let's say I want to make a short name out of the first five words of the original name:
shortName = Concat Items( nameWords[{1, 2, 3, 4, 5}], "_" );Everything works fine while I'm getting names in the format that I expect, i.e. more than five words in the name.
But as soon as I get name like "aaa_bbb_ccc" (quite unexpected, but totally real) I get an error when indexing into my list.
Question: How do I index into not 5, but the least of 5 and the N Items of the list? Rather than write an IF statement to figure out which is less?
You could also use Left()
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), "_"));
There you go:
shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])