【发布时间】:2014-10-04 10:39:41
【问题描述】:
我有一个文本文件,其内部到处都有标记“%%#%”。我正在尝试编写一个快速而简单的 Groovy shell 脚本,用美元符号“$”替换所有“%%#%”实例。
到目前为止我有:
#!/usr/bin/env groovy
File f = new File('path/to/my/file.txt')
f.withWriter{ it << f.text.replace("%%#%", "$") }
但是当我运行这个脚本时,什么也没有发生(没有例外和没有字符串替换)。我想知道我正在搜索的任何字符或美元符号本身是否被引擎盖下的正则表达式引擎解释为特殊字符。无论如何,我哪里出错了?
【问题讨论】:
-
Groovy 字符串似乎没有
.replace方法,只有.replaceAll和.replaceFirst。 -
试试 '$' 而不是 "$"..
-
如果这是您的脚本所要做的全部,还可以考虑使用 sed
sed -ie 's/%%#%/$/g' path/to/my/file.txt -
我不确定文件输入,但在这里使用replaceAll,
.replaceAll('%%#%', Matcher.quoteReplacement('$'))
标签: regex string replace groovy