【发布时间】:2014-10-18 01:41:00
【问题描述】:
我有一个项目,其中有需要注入字符串的变量。假设我已经编写了方法并将其称为 replaceVariables 并将 {varaible} 替换为 foo。
replaceVariables("This variable should be replaced {variable}")
// "This variable should be replaced foo"
replaceVariables("This variable should NOT be replaced \\{variable\\}")
// "This variable should NOT be replaced {variable}"
replaceVariables("This variable should be replaced \\\\{variable\\\\}")
// "This variable should be replaced \foo\"
我可以编写一个自定义解析器来检测反斜杠并完成所有这些,但我真的觉得我在这里重新发明了轮子。
在 Apache 或 Spring 库中是否有这样的实现?我从春天就知道有 SPEL,但我觉得这种方式过头了。其他可能性是正则表达式,但无论我如何尝试构建正则表达式,它似乎总是需要在检查转义 \ 之前查看 1,也就是您检测到反斜杠,但可能是反斜杠本身被转义等等(虽然我有点讨厌正则表达式)。
注意:我必须遵循{variableName} 命名约定。
【问题讨论】:
-
我认为第三个测试没有意义。如果大括号内有文字 \,则大括号内的值不是 variable
-
@bowmore 同意。为什么我不想编写自己的实现的案例和要点:)
标签: java string-matching