2016-09-14 5 views
1

文字列のリストを反復し、接尾辞/接頭辞 ""と連結したい場合は、リストの最後のエントリでない場合は末尾にコンマを追加します。文字列のスカラ/ 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ブロック内にログを記録すると、反復処理中ですが、何も割り当てられていないことが示されます。

私はこの次のようにテンプレートで直接ループのために呼び出した場合は、それが動作スニペット:

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

をしかし、私は数回反復したくないので、私はその後、変数に連結された文字列を割り当てます。

すべてのヘルプは、私はmkStringはあなたが前後に引用符をしたい場合mkStringはエレガント

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

これを行うことができます

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

答えて

3

で おかげでいただければ幸いですあなたができる文字列

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

これはまさに私が探していたものなので、一重引用符を二重引用符に置き換えて、魅力的に機能しました。このように: 'list.mkString(" \ ""、 "\"、\ ""、 "\" ")助けてくれてありがとう – Yeti

+0

ええ、私はエスケープシーケンスに夢中にならないようにPerlの 'q {"、 "}"のような別の文字列区切り文字を持つようなScalaの方法 – Thilo

+0

私は仲間を知らない、ごめんなさい – Yeti

1

やりたいことができると思い、事前

+0

'(" "" "" "" "" "" "" "" 、 "" "" "") 'が要求されました。 –

+0

私はこれを前に試しましたが、残念なことに最初と最後の兆候に引用符を付けるだけです。 – Yeti

+0

@イエティ:別のカンマに引用符を追加して、それを回避することもできます。 – Thilo