2017-06-03 59 views
0
import java.util.ArrayList; 
import java.util.List; 


public class ListString { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 


     List list=new ArrayList(); 
     list.add("Patter1 -> Assert1"); 
     list.add("Patter2 -> Assert2"); 
     list.add("Patter3 -> Assert3"); 
     list.add("Patter4 -> Assert4"); 
     list.add("Patter5 -> Assert5"); 


     for (int i = 0; i < list.size(); i++) { 


      String string = (String)list.get(i);  
      System.out.println(string); 
      StringBuffer stringAppended=new StringBuffer(); 
      String[] split = string.split(" -> "); 
      for (int k = 0; k < split.length; k++) { 
       stringAppended.append(split[k]).append(" && "); 
       // System.out.println(split[k]); 
      } 
      stringAppended.replace(stringAppended.length() - 3, stringAppended.length(), " "); 
      System.out.println(stringAppended); 

      if(string.contains(stringAppended)){ 

       System.out.println("INSIDE IF LOOP"); 

      } 

     } 

    } 

} 

在上面的代碼我試圖檢查Patter1Assert1存在於stringPath,絃樂路徑有以下模式如何使&&作爲邏輯運算符串

Patter1 -> Assert1 
Patter2 -> Assert2 
Patter3 -> Assert3 
Patter4 -> Assert4 
Patter5 -> Assert5 

我我試圖通過下面的代碼來做到這一點

if(stringPath.contains(stringAppended)){ 

       System.out.println("INSIDE IF LOOP"); 

      } 

我做動態的應用程序,其中stringAppended將有Patter1 & & Assert1,stringAppended將有更多的& &像這樣在我的應用程序, 我們如何使& &爲這裏的邏輯運算,目前,它處理爲正常的字符串

+0

不要使用*生*仿製藥。更改爲'列表 list = new ArrayList <>();'。這樣你就不需要投射到'String'。 ---另外,爲什麼不使用增強的'for'循環,也稱爲for-each循環? – Andreas

+0

如果它總是&& - 運算符,則不需要它。您可以將字符串追加到列表中,並編寫一個函數來檢查整個列表中的字符串。 如果你真的需要動態,你可以考慮使用Nashorn JavaScript引擎 – Turo

回答

0

把它分成兩個布爾表達式:

if(stringPath.contains("Patter1") && stringPath.contains("Assert1")){ ... }

+0

stringAppended將是動態的,它是動態的,並有&&在那 – Ganesh

1

構建與&&字符串中它不會神奇把它變成可以評估的表達式。它仍然只是一個帶有文本的字符串。

如果你有一個單詞列表,需要檢查是否輸入的文本包含所有的那些話,你必須做兩件事情:通過詞

  • 循環,並檢查他們在一個時間。

  • 確保您只匹配「單詞」,例如如果單詞是is,則不想匹配this

  • (可選)匹配字不區分大小寫,例如,字This也匹配this

要做到這些,使用正則表達式是最簡單的,例如,

public static boolean containsAllWords(String input, List<String> words) { 
    for (String word : words) { 
     String regex = "(?i)\\b(?:" + Pattern.quote(word) + ")\\b"; 
     if (! Pattern.compile(regex).matcher(input).find()) 
      return false; 
    } 
    return true; 
} 

測試

System.out.println(containsAllWords("This was a test.", Arrays.asList("was", "test"))); 
System.out.println(containsAllWords("This was a test.", Arrays.asList("is", "test"))); 

輸出

true 
false 
+0

Kudos !!!!!!這項工作符合我的要求 – Ganesh