我想在Groovy中缩进多行字符串,但我无法找到正确的RegEx语法/或Regex标志来实现这一点。
这是我到目前为止所尝试的内容:
*** Variables ***
${json} {"items":[{"name":"item1","status":{"id":1,"name":"opened"}},{"name":"item2","status":{"id":2,"name":"closed"}}]}
${json_path} $.items[?(@.status.name="closed")].name
*** Test Cases ***
Get closed item
${names}= Get Json Items ${json} ${json_path}
Should be equal ${names[0]} item2
由于某种原因,这些没有按预期工作。
唯一有用的是这个块:
def s="""This
is
multiline
"""
println s.replaceAll('/(.*)/'," \1")
println s.replaceAll('/^/'," ")
println s.replaceAll('(?m)/^/'," \1")
println s.replaceAll('(?m)/(.*)/'," \1")
是否有更短/更有效的方法来缩进Groovy中字符串的所有行?
答案 0 :(得分:1)
您需要将(?m)
指令放在正则表达式中;并且模式是一个slashy字符串,而不是带有斜杠的单引号字符串:
s.replaceAll(/(?m)^/, " ")
答案 1 :(得分:0)
你可以拆分和加入 - 不知道它是否更有效,但更短
def s="""This
is
multiline
"""
def indent = " "
println indent + s.split("\\n").join("\n" + indent);
答案 2 :(得分:0)