如何制作&&作为字符串中的逻辑运算符

时间:2017-06-03 12:47:34

标签: java arrays string java-6

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;作为这里的逻辑运算符,目前它被视为普通字符串

2 个答案:

答案 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" )){ ... }