Scala / Java模板列表迭代和串联串联

时间:2016-09-14 07:58:03

标签: java scala playframework-2.5 scala-template

我想迭代一个字符串列表,用后缀/前缀""连接它们。如果不是列表的最后一个条目,则在末尾添加一个逗号。

通缉输出示例:"圈","立方体","香蕉"

我的第一个尝试是以下代码段:

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

但是当我在任何地方使用@listStringifier时,这个函数总是空的。

在@listStringifier块中记录显示它正在迭代,但没有分配任何内容。

如果我直接在模板中调用for循环,就像下面的代码片段一样:

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

但我不想多次迭代,所以我想在之后将连接的字符串赋值给变量。

任何帮助将不胜感激, 提前谢谢

2 个答案:

答案 0 :(得分:3)

我认为mkString可以做你想做的事情

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

答案 1 :(得分:1)

mkString可以优雅地做到这一点

@listStringifier(list: List[String]) = @{ list mkString("", ",", "") }

如果你想在你可以做的字符串周围做引号

list.map(str => s""""$str"""").mkString(",")