如何从字符串中提取变量

时间:2011-06-02 03:43:20

标签: java variables configuration properties

我正在寻找一个Java类,对于给定的字符串“$ {animal}跳过$ {target}。”能够提取变量名称,即“动物”和“目标”。

我曾希望在Commons Lang StrSubstitutor有一个方法 getVariables(String str) : List<String>
......但没有这样的运气。

是的我可以自己写这个,但我确定必须有一个存在的第三方库来做到这一点。

2 个答案:

答案 0 :(得分:1)

如果你真的想要提取这些值并避免整个库的依赖,你可以做一个简单的正则表达式匹配:

public List<String> getVariableNames(String source) {
  List<String> vs = new ArrayList<String>();
  Pattern p = Pattern.compile("\\$\\{(\\w+)\\}");
  Matcher m = p.matcher(source);
  while (m.find()) {
    vs.add(m.group(1));
  }
  return vs;
}

将模式存储为成员变量将提高性能。

答案 1 :(得分:0)

实际上我在为DSL Adapter开发GenericFixture时也在寻找类似的库。

在查看了一些基于库和模板的框架之后,我最终决定自己编写代码。请在DSLAdapter class {{1}} {{1}}中查看我用于此目的的代码。