循环遍历Groovy多行字符串中的列表

时间:2010-06-02 04:16:56

标签: groovy

我正在尝试在Groovy中创建一个多行字符串。我有一个字符串列表,我想在多行字符串中循环。我不确定这个的语法是什么。像下面的东西......

    def html = """\
       <ul>
          <li>$awaiting.each { it.toPermalink()}</li>
       </ul>
     """

2 个答案:

答案 0 :(得分:6)

以下内容:

class PLink {
  String name
  String toPermalink() {
    "link->$name"
  }
}
def awaiting = [ new PLink( name:'one' ), new PLink( name:'two' ), new PLink( name:'three' ) ]
def html = """<ul>
  <li>${awaiting.collect { it.toPermalink() }.join( "</li><li>" )}</li>
</ul>"""

生成此输出:

<ul>
  <li>link->one</li><li>link->two</li><li>link->three</li>
</ul>

它基本上调用每个元素上的方法,collects将结果返回到另一个列表中,然后将joins列表一起变成一个字符串

答案 1 :(得分:1)

您是否考虑过使用MarkupBuilder?它们提供了构建HTML或XML的非常好的方法,特别是如果你想嵌入循环结构或条件逻辑。

例如:

import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def builder = new MarkupBuilder(writer)

def awaiting = ['one', 'two', 'three']

builder.html {
    ul {
        awaiting.each { 
            li(it.toString())
        }
    }
}

println writer.toString()

结果:

<html>
  <ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
  </ul>
</html>