2013-02-01 51 views
0

我有我試圖解決一個奇怪的問題,發現,如果一個字符串包含在任何字符串的枚舉

我有一個字符串,像這樣

public enum Enumm{ 
    Item1("i1"), 
    Item2("i2"); 


    private String itemText; 
    private Enumm(String inText){ 
     this.setitemText(inText); 
    } 
// getter and setter for itemText not typing 
} 

一個枚舉現在在另一個類中,我想檢查一個字符串inputString是否包含「i1」或「i2」,但問題是我無法使用循環。

我知道我能做到這一點

for(Enumm item: Enumm.values()){ 
     if (inputString.contains(item.getItemText)) { 
      // do something 
     } 
    } 

但我的問題的約束不允許我做這樣

我在尋找類似

if(inputString.contains(Enumm.Item1.getItemText||Enumm.Item2.getItemText)){ 
    //do something 
} 

但也是動態的,它發現枚舉中的所有項目 任何人都可以幫助我找到解決方案?提前致謝。

+4

爲什麼你不能使用循環? – smk

+0

這是功課嗎? –

+0

@PaulVargas看起來像它,考慮OP說「我的問題的限制」 –

回答

1

你可以一個靜態方法添加到您的枚舉稱爲像findInString(String s),做環比values()你,如果它發現它返回一個布爾值。但這取決於你爲什麼要避免循環。很顯然,除了松鼠,你不能看到它的環路,它什麼也不做。

1

您可以創建一個Item列表/數組,然後通過數組解析來檢查i1或i2。

Item[] string = {"i1","i2"}

if(string.contains("i1")||string.contains("i2")) 
{ 

} 
1

也許這可能有幫助嗎?

List<String> list = Collections.list(enumeration); 
boolean b = list.contains("Searchstring");