2016-09-14 105 views
1

我想迭代一個字符串列表,將它們與後綴/前綴「」連接起來,如果它不是列表的最後一個條目,則在末尾添加一個逗號。Scala/Java模板列表迭代和串聯字符串

通緝輸出例如:「圈子」,「魔方」,「香蕉」

我的第一次嘗試是下面的代碼片段:

@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"} 
    } 
} 

,但我不想來迭代幾次,所以我想將串接的字符串變量之後分配。

任何幫助,將不勝感激, 謝謝提前

回答

3

我覺得mkString可以做你想做的

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

感謝您提及,這正是我正在尋找的,所以我用雙引號替換了單引號,它的工作方式就像一個魅力。像這樣:'list.mkString(「\」「,」\「,\」「,」\「」)'謝謝你的幫助 – Yeti

+0

是的,我把單引號不要瘋狂的轉義序列一個在斯卡拉的方式有替代字符串分隔符像Perl的'q {「,」}'?) – Thilo

+0

我不知道隊友,對不起 – Yeti

1

mkString能做到這一點優雅

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

,如果你想引號包圍你可以做的字符串

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

'(「」「」「」「」「」「」,「」「」 ,「」「」「」「)'被要求。 –

+0

感謝提及,我之前嘗試過,但不幸的是,這隻會將引號附加到第一個和最後一個符號。 – Yeti

+0

@Yeti:您可以將引號添加到分隔逗號以解決該問題。 – Thilo