【问题标题】:How to pull variables out of a string如何从字符串中提取变量
【发布时间】:2011-06-02 03:43:20
【问题描述】:

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

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

是的,我可以自己写这个,但我确信肯定有一个第三方库可以做到这一点。

【问题讨论】:

    标签: java variables configuration properties


    【解决方案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;
    }
    

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

    【讨论】:

    • 不错的解决方案。我最终使用它有几个原因; * 我控制字符串,所以嵌套元素或任何其他古怪的东西都不会破坏正则表达式。 *基本,比更复杂的解决方案少得多的陷阱。再次感谢。 PS 仍然希望在 Commons 中看到这个,哈!
    【解决方案2】:

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

    在查看了一些库和基于模板的框架后,我最终决定自己编写代码。随意检查我在DSLAdapter class 中用于此目的的代码,来自GenericFixture available on sourceforge

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2022-01-06
      • 2019-07-22
      • 2013-08-28
      相关资源
      最近更新 更多