2013-01-25 57 views
0
public enum OPERATORS { 
    MUL("*"), ADD("+"), SUB("-"), DIV("/") 
} 

和String作爲Java:如何知道一個字符串是否有一個ENUM存在?

s = A2 B4 * C5/

我如何檢查是否sOPERATORS之一嗎?

+1

向我們展示'enum'聲明的其餘部分。特別是,保存枚舉的字符串值的屬性的getter。 –

+1

你只想檢查's' *是否包含* OPERATORS之一?或者你是否想將字符串解析爲後綴數學表達式? –

回答

2

假設getOperatorSymbol()在你的枚舉實施

for (OPERATORS op: OPERATORS.values()) { 
    if(s.contains(op.getOperatorSymbol()) 
    { 
     //your code 
    } 

} 
1

我如何檢查是否S有運營商之一?

你必須以某種方式對它進行編碼。您正在搜索的字符串不是enum值的名稱。它們存儲在一個自定義屬性中。所以你必須手動提取字符串,然後在每個目標字符串中搜索。

有很多方法可以做到這一點;例如

  • 您可以簡單地遍歷OPERATOR枚舉值,提取每個人的操作符字符串並根據您的輸入字符串進行測試;請參閱@ pangea的答案。

  • 您可以使用循環來構建一個匹配任何運算符字符串的正則表達式,然後使用該正則表達式來匹配字符串。如果性能是一個真正的問題,那麼這將是一個很好的方法,您可以分攤創建正則表達式的成本;即只做一次,並重復使用正則表達式多次。 (但是,如果性能不是問題,這種方法的額外複雜性不保證。)

相關問題