cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
miguello
Level VI

Indexing into a list without errors

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?

2 ACCEPTED SOLUTIONS

Accepted Solutions
miguello
Level VI

Re: Indexing into a list without errors

There you go:

shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])

View solution in original post

jthi
Super User

Re: Indexing into a list without errors

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), "_"));

 

 

-Jarmo

View solution in original post

2 REPLIES 2
miguello
Level VI

Re: Indexing into a list without errors

There you go:

shortName = Concat Items(nameWords[1::Min(NItems(nameWords), 5)])
jthi
Super User

Re: Indexing into a list without errors

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), "_"));

 

 

-Jarmo