2016-09-14 14 views
1

Я хочу перебрать список строк, объединить их с суффиксом/префиксом "", и если это не последняя запись в списке, добавьте запятую в конец.Список шаблонов шаблонов Scala/Java и конкатенация строки

Wanted Выходной пример: «круг», «куб», «банан»

Моя первая попытка является следующий фрагмент:

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

Но эта функция всегда пусто, когда я использую @listStringifier в любом месте ,

Вход в блок @listStringifier показывает, что он выполняет итерацию, но не назначает ничего.

Если я называю цикл непосредственно в шаблоне, как это следующий фрагмент кода работает:

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

Но я не хочу повторять несколько раз, так что я хочу, чтобы назначить сцепленную строку в переменную после этого.

Любая помощь будет оценена, заранее спасибо

ответ

3

Я думаю mkString может делать то, что вы хотите

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

Благодарим за упоминание, это именно то, что я ищу, поэтому я заменил одинарный кавычек двойными кавычками и работал как шарм. Например: 'list.mkString (" \ "", "\", \ "", "\" ")' Спасибо за вашу помощь – Yeti

+0

Да, я поставил одинарные кавычки, чтобы не сходить с ума по escape-последовательностям (есть ли способ в Scala иметь альтернативные строковые разделители, такие как 'q {", "}'? Perl ') – Thilo

+0

Я не знаю, mate, извините – Yeti

1

mkString может сделать это элегантно

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

если вы хотите цитаты вокруг струны вы можете сделать

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

'(" "" "" "" "," "" "," "" "" , "" "" "" ")'. –

+0

Благодарим за упоминание, я пробовал это раньше, но к сожалению, это будет только добавление котировок к самому первому и последнему знаку. – Yeti

+0

@Yeti: Вы можете добавить котировки в разделительную запятую, чтобы обойти это. – Thilo

 Смежные вопросы

  • Нет связанных вопросов^_^