我正在尝试在Groovy中创建一个多行字符串。我有一个字符串列表,我想在多行字符串中循环。我不确定这个的语法是什么。像下面的东西......
def html = """\
<ul>
<li>$awaiting.each { it.toPermalink()}</li>
</ul>
"""
答案 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>