2011-06-02 75 views
2

我正在尋找給定字符串「$ {animal}跳過$ {target}」的Java類。「能夠拉出變量名稱,即「動物」和「目標」。如何從字符串中提取變量

我曾希望在StrSubstitutor Commons Lang中有一個方法
getVariables(String str) : List<String>
......但沒有這樣的運氣。

是的,我可以自己寫這個,但我確定必須有一個第三方庫存在那裏。

回答

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; 
} 

存儲模式作爲一個成員變量將提高性能。

+0

不錯的解決方案。由於幾個原因,我最終使用了這個; *我控制字符串,所以沒有嵌套元素或任何其他古怪打破正則表達式的機會。 *基本的方法比一個更復雜的解決方案更容易陷入困境。 再次感謝。 PS仍然喜歡在Commons看到這個,哈! – markdsievers 2011-06-02 06:56:23