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");
}
}
}
}
在上面的代码中我试图检查 Patter1 和 Assert1 是否存在于stringPath中,字符串路径是否具有模式
Patter1 -> Assert1
Patter2 -> Assert2
Patter3 -> Assert3
Patter4 -> Assert4
Patter5 -> Assert5
我试图通过下面的代码
来做到这一点if(stringPath.contains(stringAppended)){
System.out.println("INSIDE IF LOOP");
}
我正在进行动态应用,其中stringAppended将具有 Patter1&amp;&amp; Assert1 ,stringAppended将有更多&amp;&amp;在我的申请中这样, 我们怎样才能制造&amp;&amp;作为这里的逻辑运算符,目前它被视为普通字符串
答案 0 :(得分:1)
在其中构建一个包含&&
的字符串,不会神奇地将其转换为可以评估的表达式。它仍然只是一个带文字的字符串。
如果你有一个单词列表,需要检查输入文本是否包含 all 这些单词,你必须做两件事:
循环翻译单词并一次检查一次。
确保您只匹配“字词”,例如如果单词为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
答案 1 :(得分:0)
将其拆分为两个布尔表达式:
if(stringPath.contains("Patter1") && stringPath.contains("Assert1" )){ ... }