join

Funkce spojí pole řetězců/objektů do jednoho řetězce.

String join ( 
  ( List<String> | List<Object> ) ls ,
    String glue [ ,
    String subvalue [ ,
    Boolean trailing [ ,
    Boolean leading [ ,
    Boolean empty ] ] ] ]
)
ls
Seznam spojovaných řetězců, případně objektů, z nichž se řetězce mají získat.
glue
Spojující řetězec.
subvalue
Název podhodnoty spojovaných objektů. Pokud je nastaveno, z každého prvku ls se získá podhodnota s tímto názvem a spojují se takto získané hodnoty.
trailing
Indikuje, zda se má na konec pospojovaného řetězce také připojit glue. Defaultně se tak neděje.
leading
Indikuje, zda se má na začátek pospojovaného řetězce také připojit glue. Defaultně se tak neděje.
empty
Indikuje, zda se má v případě, že je ls prázdný seznam, vrátit glue (hodnota true) nebo null (hodnota false). Defaultní hodnota je false.

Funkce vytvoří řetězec tak, že mezi jednotlivé prvky seznamu ls vloží řetězec glue. Pokud je seznam ls prázdný, funkce vrátí null.

Příznaky trailing a leading se uplatňují jen v případě, že je seznam neprázdný: pak se na konec, resp. na začátek vloží také oddělovač.

Pozor: Funkce ignoruje všechny hodnoty null v seznamu ls.

Příklad: Spojení řetězců
Šablona
{with asList("a", "b", "c")}
Výchozí:   {join(_, ", ")} 
Trailing:  {join(_, ", ", null, true)} 
Leading:   {join(_, ", ", null, null, true)}
{/with}
{with asList()} 
Bez empty: {join(_, ", ")} 
Empty:     {join(_, ", ", null, null, null, true)} 
{/with}
Výstup
Výchozí:   a, b, c 
Trailing:  a, b, c,  
Leading:   , a, b, c 

Bez empty:  
Empty:     , 

Možnost spojit podhodnoty objektů v seznamu se dá využít v případech, kdy je třeba spojený řetězec dále použít například jako argument.

Příklad: Spojení názvů seznamu assetů
Šablona
{join(sortedChildren(_primary), ', ', 'title')}
Výstup
Novinky, O nás, Katalog, Kontakty, Mapa stránek

Funkce sortedChildren vrací seznam všech potomků aktuální sekce.

Funkce join vybere z každého z těchto assetů podhodnotu title (tedy titulek) a výsledek spojí do jednoho řetězce s čárkou jako oddělovačem.

Viz také funkci split.

Pro vložení příspěvku do diskuse se přihlašte.