groovy - 使用 Groovy onliner 缩进多行字符串

标签 groovy

我想在 Groovy 中缩进一个多行字符串,但我无法找出正确的 RegEx 语法/或 Regex 标志来实现这一点。

这是我到目前为止的尝试:

def s="""This
is
multiline
"""
println s.replaceAll('/(.*)/',"      \1")
println s.replaceAll('/^/',"     ")
println s.replaceAll('(?m)/^/',"      \1")
println s.replaceAll('(?m)/(.*)/',"      \1")

由于某种原因,这些没有按预期工作。

唯一有效的是这个块:
def indented = ""
s.eachLine {
  indented = indented + "      " +  it + "\n"
}
println indented

有没有更短/更有效的方法来缩进 Groovy 中字符串的所有行?

最佳答案

你需要把(?m)指令 正则表达式;并且模式是斜线字符串,而不是带斜线的单引号字符串:

s.replaceAll(/(?m)^/, "    ")

关于groovy - 使用 Groovy onliner 缩进多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978953/

相关文章:

java - 使用 Spock 在 Spy 对象中 stub 一个 void 方法

grails - Groovy 中的三重单引号字符串 - 结果字符串是否应该包含额外的空格?

grails - JavaScript评估如何在Groovy或Grails中使用

xml - 使用常规脚本在 SOAPUI 请求中设置参数的正确方法

javascript - gsp更改未反射(reflect)在grails 2.5.1中

Gradle:从 .class 文件创建 .jar 并在构建 EAR 时将其包含在 EAR_dir/lib 中

gradle - Groovy @Slf4j 注释 : "Class path contains multiple SLF4J bindings"

grails - Grails域类保存NULL id属性;运行Web应用程序时导致错误

grails - Grails创建多个值(value)图

java - 自动化测试 Geb - 扩展页面或模块时出现 IntelliJ 错误