groovy - 尝试使用 groovy DSL 替换文件中的字符串
问题描述
我想将VERSION
文件中的占位符替换为变量version
值,但遇到以下错误:
def versions = ["8.8.0", "9.9.0"]
versions.each { version ->
def file = new File("$Path/test.url")
def fileText = file.replaceAll("VERSION", "${version}")
file.write(fileText);
错误:
groovy.lang.MissingMethodException: No signature of method: java.io.File.replaceAll() is applicable for argument types: (java.lang.String, org.codehaus.groovy.runtime.GStringImpl) values: [VERSION, 8.8.0]
我是groovy dsl的新手,不知道我错过了什么,任何建议,不胜感激!
解决方案
另一种方法是使用 groovy 文件.text
属性:
def f = new File('sample-file.txt')
f.text = f.text.replaceAll('VERSION', '8.8.0')
就像@cfrick 提到的那样,在多个版本上执行替换操作没有多大意义,因为只有第一个版本会真正找到VERSION
字符串。
在示例文件上运行上述内容:
─➤ groovy solution.groovy
─➤
将导致字符串被替换:
─➤ diff sample-file.txt_original sample-file.txt
1c1
< Dolore magna aliqua. VERSION Ut enim ad minim veniam.
---
> Dolore magna aliqua. 8.8.0 Ut enim ad minim veniam.
哪里diff
是比较两个文件的linux工具。
推荐阅读
- java - 在 Java 中使用 floorentry 时遇到问题
- excel - SaveAs 错误(在创建目录之前保存文件)
- java - Spring Boot 应用程序中的嵌入式 Untertow 最终变得无响应
- amazon-ecs - 将 ECS 日志转发到 splunk 和 cloudwatch
- r - 如何在 R 中生成一个可显示的表,对不同列中字符串和数字之间的匹配进行计数/求和
- javascript - 我正在尝试记录作者姓名和 JSON 文件中的引用,但代码不起作用?
- java - 在基于节点的解释器中处理不同的数据类型
- c++ - 关闭和打开多个窗口 GLFW OpenGL C++
- kubernetes - 在 kubernetes 中创建 Pod 时,CPU 和内存的请求和限制的默认值是多少?
- r - 使用 ggplot + osmdata 绘制多边形的问题