javascalaplayframework-2.5scala-template

Scala/Java template list iteration and concatenation of string


I want to iterate over a list of strings, concatenate them with the suffix/prefix "" and if it's not the last entry of the list append a comma at end.

Wanted Output example: "circle","cube","banana"

My first try is the following snippet:

@listStringifier(list: List[String]) = @{
  if (list != null && !list.isEmpty) {
   for ((string, index) <- list.zipWithIndex){if(index != list.size-1){"string",}
   else{"string"}
   }
  }
}

But this function is always empty when I use @listStringifier anywhere.

Logging within the @listStringifier block shows that it is iterating, but not assigning anything.

If I call the for loop directly in the template like this following snippet it works:

@if (list != null && !list.isEmpty) {
  for ((string, index) <- list.zipWithIndex){if(index != list.size-1){"@string",}
  else{"@string"}
  }
}

But I dont want to iterate several times so I want to assign the concatenated string to a variable afterwards.

Any help would be appreciated, thanks in advance


Solution

  • I think mkString can do what you want

    list.mkString( "'" , "','" , "'" )