Groovy替换类似于多行字符串的文件内容的占位符
获取以下脚本,该脚本替换多行字符串中的值Groovy替换类似于多行字符串的文件内容的占位符,groovy,Groovy,获取以下脚本,该脚本替换多行字符串中的值 def param1 = 'Groovy' def param2 = 'Java' def multiline = """ ${param1} is closely related to ${param2}, so it is quite easy to make a transition. """ //output shows with the replaced values for param1 and param2 println multilin
def param1 = 'Groovy'
def param2 = 'Java'
def multiline = """
${param1} is closely related to ${param2},
so it is quite easy to make a transition.
"""
//output shows with the replaced values for param1 and param2
println multiline
输出如预期所示:
问题:
${param1} is closely related to ${param2},
so it is quite easy to make a transition.
现在,我尝试使用文件而不是多行字符串来执行相同的操作。i、 例如,将多行字符串复制到一个文件中,并使用下面的脚本执行相同的操作,但不起作用(未给出所需的结果)
我敢肯定,一定是我错过了什么。尝试了多种方法,但都没有成功
试试#1:脚本
def param1 = 'Groovy'
def param2 = 'Java'
def multiline = Eval.me(new File('test.txt').text)
println multiline
它无法运行。错误如下:
org.codehaus.groovy.control.multipleCompositionErrorsException:启动失败:
Script1.groovy:1:应为EOF,在第1行第42列找到“,”。
s与${param2}密切相关,
^
1错误 试试看#2
def param1 = 'Groovy'
def param2 = 'Java'
def multiline = new File('test.txt').text
def finalContent = """$multiline"""
println finalContent
输出没有区别,只是显示文件内容的原样
输出:
${param1} is closely related to ${param2},
so it is quite easy to make a transition.
有什么指示吗?我遗漏了什么
请注意,目前我希望避免使用
replace()
方法修改文件内容。不确定为什么它不起作用,但是我在这里建议的是最适合这里的方法。请看一看:
import groovy.text.SimpleTemplateEngine
def f = new File('lol.txt')
println f.text
def binding = [
param1: 'Groovy',
param2: 'Java',
]
def engine = new SimpleTemplateEngine()
def template = engine.createTemplate(f.text).make(binding)
println template.toString()
可以找到文件内容未评估的原因解释。感谢您的快速回复。我想我可能做错了什么。感谢您建议的
模板
,这是我继续进行的一件好事。如果有人解释我试过的东西有什么问题,我会等你。@Rao,这里你有一个解释:感谢你花时间详细说明问题原因,并很高兴使用模板
。