我正在尋找給定字符串「$ {animal}跳過$ {target}」的Java類。「能夠拉出變量名稱,即「動物」和「目標」。如何從字符串中提取變量
我曾希望在StrSubstitutor Commons Lang中有一個方法
getVariables(String str) : List<String>
......但沒有這樣的運氣。
是的,我可以自己寫這個,但我確定必須有一個第三方庫存在那裏。
我正在尋找給定字符串「$ {animal}跳過$ {target}」的Java類。「能夠拉出變量名稱,即「動物」和「目標」。如何從字符串中提取變量
我曾希望在StrSubstitutor Commons Lang中有一個方法
getVariables(String str) : List<String>
......但沒有這樣的運氣。
是的,我可以自己寫這個,但我確定必須有一個第三方庫存在那裏。
你可能只是做一個簡單的正則表達式匹配,如果你真的只是想拔出這些價值觀念,避免整個庫的依賴:
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;
}
存儲模式作爲一個成員變量將提高性能。
其實我也在尋找一個類似的庫,同時爲我的GenericFixture開發DSL Adapter。
看過一些庫和基於模板的框架後,我最終決定自己編寫代碼。請隨時從GenericFixture available on sourceforge檢查我用於此目的的代碼DSLAdapter class
。
不錯的解決方案。由於幾個原因,我最終使用了這個; *我控制字符串,所以沒有嵌套元素或任何其他古怪打破正則表達式的機會。 *基本的方法比一個更復雜的解決方案更容易陷入困境。 再次感謝。 PS仍然喜歡在Commons看到這個,哈! – markdsievers 2011-06-02 06:56:23