这在Groovy中非常好用:
println '''First line,
second line,
last line'''
多行字符串。我已经在一些语言中看到了更进一步的工具,可以删除第2行的缩进,因此该语句将打印出来:
First line, second line, last line
而不是
First line, second line, last line
在Groovy中可以吗?
答案 0 :(得分:13)
您可以使用stripMargin()
:
println """hello world!
|from groovy
|multiline string
""".stripMargin()
如果你不想要前导字符(在这种情况下就像管道一样),那么也有stripIndent()
,但是字符串需要格式化不同(最小缩进很重要)
println """
hello world!
from groovy
multiline string
""".stripIndent()
来自stripIndent
从String中的每一行中删除前导空格。前导空格数最少的行确定要删除的数量。在计算要去除的前导空格的数量时,将忽略仅包含空格的行。
<强>更新强>:
关于使用操作员这样做,我个人不建议这样做。但是对于记录,可以通过使用扩展机制或使用类别(更简单和更笨重)来完成。类别示例如下:
class StringCategory {
static String previous(String string) { // overloads `--`
return string.stripIndent()
}
}
use (StringCategory) {
println(--'''
hello world!
from groovy
multiline string
''')
}