我有这种格式的ID:
1.5.31.14.${CHANNEL}.${SLOT}
它作为字符串从文件读入,我正在尝试用其他变量替换$ {}标记。
然而,当我跑步时:
id.replaceAll("\${CHANNEL}", "3")
它将尝试用名为
的值替换$ {CHANNEL}CHANNEL
在函数内并抛出错误。
我一直在疯狂地想弄清楚我可以用什么来代替
${CHANNEL} and ${SLOT}
ID中的。
如果有人有任何建议,请告诉我。
修改
这是错误:
Exception thrown
groovy.lang.MissingPropertyException: No such property: CARD for class: ConsoleScript91
编辑2 这是我运行的代码:
def id = '1.5.31.14.${CHANNEL}.${SLOT}'
id = id.replaceAll('\${CHANNEL}', '3')
replaced = id.replaceAll('\${SLOT}', '2')
print replaced
这是错误:
Exception thrown
java.util.regex.PatternSyntaxException: Illegal repetition near index 0
${CHANNEL}
^
at java_lang_String$replaceAll$1.call(Unknown Source)
at ConsoleScript5.run(ConsoleScript5:2)
答案 0 :(得分:2)
你需要逃避美元符号$
和花括号{}
。请注意\
是一个特殊字符,因此它应该自行转义:
def id = '1.5.31.14.${CHANNEL}.${SLOT}'
replaced = id.replaceAll('\\$\\{CHANNEL\\}', '3').replaceAll('\\$\\{SLOT\\}', '2')
replaced2 = id.replaceAll(/\$\{CHANNEL\}/, '3').replaceAll(/\$\{SLOT\}/, '2')
assert replaced == '1.5.31.14.3.2'
assert replaced == replaced2