如何字符串转换为布尔条件的Java / Android的? [英] How to convert string to boolean condition in java/android?

查看:149
本文介绍了如何字符串转换为布尔条件的Java / Android的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个调查中的应用,并从服务器获取数据。我在将字符串转换为布尔条件,这是字符串格式所面临的问题。 这里是条件。我搜索了很多网站,但没有找到解决办法。 我看过一些帖子涉及到它,但没有任何帮助。

http://www.java-examples.com/转换成Java的字符串对象布尔对象 http://beginnersbook.com/2014/07/转换字符串到布尔基本功能于爪哇/ http://www.tutorialspoint.com/java/lang/boolean_parseboolean.htm

 的String ={hidSection = IF(((Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \7 \)|| (Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \ 7 \)|| \ N+
            (Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \ 6 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \7 \)|| \ N+
            (Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \ 6 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \7 \))\ N+
            ,1,如果(((Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \ 6 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \7 \)|| \ N+
            (Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \ 7 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \5 \))\ N+
            ,2,如果(((Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \5 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \4 \)|| \ N+
            (Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \ 2 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \ 7 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \6 \)|| \ N+
            (Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \ 4 \))\ N+
            ,3,如果(((Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \6 \)|| \ N+
            (Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \4 \&放大器;&安培; Q4b.NAOK == \ 4 \)||(Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \3 \)|| \ N+
            (Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \2 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \4 \)|| \ N+
            (Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \ 5 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \4 \))\ N+
            ,如图4所示,如果(((Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \3 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \4 \&放大器;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \ 2 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \1 \)|| \ N+
            (Q4a.NAOK == \9 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \10 \&安培;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \4 \)|| \ N+
            (Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \ 2 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \3 \))\ N+
            ,5,如果(((Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \1 \&放大器;&安培; Q4b.NAOK == \6 \)|| \ N+
            (Q4a.NAOK == \1 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \2 \&放大器;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \3 \&安培;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \4 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \9 \&安培;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \10 \&安培;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \2 \))\ N+
            ,6,如果(((Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \2 \))\ N+
            ,如图7所示,如果(((Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \2 \)||(Q4a.NAOK == \2 \&放大器;&安培; Q4b.NAOK == \1 \)|| \ N+
            (Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \1 \))\ N+
            ,8,\\))))))))};
 

我跟着<一href="http://stackoverflow.com/questions/1538755/how-to-convert-string-object-to-boolean-object">link.但对我没有帮助。如何字符串转换为布尔条件?

解决方案

从服务器返回code是可怕可怕的。不管怎么说,这code我给你做的一些步骤:

  1. 在去除新线和multispaces为从输入1个长度空间。
  2. 查找单词由图案,​​其中字开头如果和数字结束。并将它们添加到数组中。
  3. prepares模式与用户所选择的选项组合成类似于(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \5 \)(答案1和answer2)。
  4. 检查,如果数组包含字像点3.如果发现,保留了阵列和分离以逗号字。从分裂的第二个字就是答案。

 私人无效doStuff(){
    INT answer1 = 2;
    INT answer2 = 1;

    字符串s ={hidSection = IF(((Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \7 \)|| \ N+
            (Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \ 6 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \7 \)|| \ N+
            (Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \ 6 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \7 \))\ N+
            ,1,如果(((Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \ 6 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \7 \)|| \ N+
            (Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \ 7 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \5 \))\ N+
            ,2,如果(((Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \5 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \4 \)|| \ N+
            (Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \ 2 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \ 7 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \6 \)|| \ N+
            (Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \12 \&放大器;&安培; Q4b.NAOK == \ 4 \))\ N+
            ,3,如果(((Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \6 \)||(Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \6 \)|| \ N+
            (Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \4 \&放大器;&安培; Q4b.NAOK == \ 4 \)||(Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \3 \)|| \ N+
            (Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \2 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \4 \)|| \ N+
            (Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \ 5 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \4 \))\ N+
            ,如图4所示,如果(((Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \3 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \5 \)|| \ N+
            (Q4a.NAOK == \4 \&放大器;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \ 2 \)||(Q4a.NAOK == \6 \&放大器;&安培; Q4b.NAOK == \1 \)|| \ N+
            (Q4a.NAOK == \9 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \10 \&安培;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \4 \)|| \ N+
            (Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \ 2 \)||(Q4a.NAOK == \11 \&放大器;&安培; Q4b.NAOK == \3 \))\ N+
            ,5,如果(((Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \4 \)||(Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \5 \)||(Q4a.NAOK == \1 \&放大器;&安培; Q4b.NAOK == \6 \)|| \ N+
            (Q4a.NAOK == \1 \&放大器;&安培; Q4b.NAOK == \7 \)||(Q4a.NAOK == \2 \&放大器;&安培; Q4b.NAOK == \ 3 \)||(Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \3 \&安培;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \4 \&安培;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \4 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \5 \&放大器;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \8 \&放大器;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \9 \&放大器;&安培; Q4b.NAOK == \2 \)|| \ N+
            (Q4a.NAOK == \9 \&安培;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \10 \&安培;&安培; Q4b.NAOK == \ 1 \)||(Q4a.NAOK == \10 \&放大器;&安培; Q4b.NAOK == \2 \))\ N+
            ,6,如果(((Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \3 \)||(Q4a.NAOK == \2 \&安培;&安培; Q4b.NAOK == \2 \))\ N+
            ,如图7所示,如果(((Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \1 \)||(Q4a.NAOK == \1 \&安培;&安培; Q4b.NAOK == \2 \)||(Q4a.NAOK == \2 \&放大器;&安培; Q4b.NAOK == \1 \)|| \ N+
            (Q4a.NAOK == \3 \&放大器;&安培; Q4b.NAOK == \1 \))\ N+
            ,8,\\))))))))};

    字符串的答案=的getAnswer(answer1,answer2,S);
    Log.d(XXX,回答:+答案);
}

私人字符串的getAnswer(INT answer1,诠释answer2,String s)将{
    //删除空格2个或更多的长度,更换为1
    S = s.replaceAll(\ N,);
    S = s.replaceAll(\\ S +,);

    ArrayList的&LT;字符串&GT;状态=新的ArrayList&LT;字符串&GT;();

    模式P = Pattern.compile(如果\\({3} * \\ \\ D +。?);
    匹配器米= p.matcher(多个);
    而(m.find()){
        states.add(m.group());
    }

    字符串stateFormat =Q4a.NAOK == \%D \&放大器;&安培; Q4b.NAOK == \%D \;
    字符串stateFormatted =的String.Format(stateFormat,answer1,answer2);

    的for(int i = 0; I&LT; states.size();我++){
        如果(states.get(ⅰ)。载(stateFormatted)){
            串[]项= states.get(ⅰ).split(,);
            如果(items.length→1){
                返回项目[1] .trim();
            }
        }
    }

    返回null; //或空或整数-1
}
 

I am working on a survey application and getting data from server. I am facing problem in converting String to Boolean conditions, which is in String format. here is the conditions. I have searched a lot on web but found no solution. I have read some post related to it, but no help.

http://www.java-examples.com/convert-java-string-object-boolean-object http://beginnersbook.com/2014/07/convert-string-to-boolean-primitive-in-java/ http://www.tutorialspoint.com/java/lang/boolean_parseboolean.htm

String s = "{hidSection=if(((Q4a.NAOK==\"5\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"6\" && Q4b.NAOK==\"7\")|| \n" +
            "            (Q4a.NAOK==\"7\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"7\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"7\" && Q4b.NAOK==\"7\")|| \n" +
            "            (Q4a.NAOK==\"8\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"7\"))\n" +
            "    ,1,if(((Q4a.NAOK==\"4\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"4\" && Q4b.NAOK==\"7\") || (Q4a.NAOK==\"5\" && Q4b.NAOK==\"5\")||\n" +
            "            (Q4a.NAOK==\"5\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"7\" && Q4b.NAOK==\"3\") || (Q4a.NAOK==\"6\" && Q4b.NAOK==\"5\")|| \n" +
            "            (Q4a.NAOK==\"7\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"7\")|| \n" +
            "            (Q4a.NAOK==\"11\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"5\"))\n" +
            "    ,2,if(((Q4a.NAOK==\"4\" && Q4b.NAOK==\"5\") || (Q4a.NAOK==\"5\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"4\")|| \n" +
            "            (Q4a.NAOK==\"7\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"7\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"5\")|| \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"9\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"6\")|| \n" +
            "            (Q4a.NAOK==\"11\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"12\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"4\"))\n" +
            "    ,3,if(((Q4a.NAOK==\"2\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"3\" && Q4b.NAOK==\"6\")|| \n" +
            "            (Q4a.NAOK==\"3\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"4\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"5\" && Q4b.NAOK==\"3\")|| \n" +
            "            (Q4a.NAOK==\"6\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"4\")|| \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"4\"))\n" +
            "    ,4,if(((Q4a.NAOK==\"2\" && Q4b.NAOK==\"4\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"3\" && Q4b.NAOK==\"4\")||                (Q4a.NAOK==\"3\" && Q4b.NAOK==\"5\")|| \n" +
            "            (Q4a.NAOK==\"4\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"5\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"1\")|| \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"4\")|| \n" +
            "            (Q4a.NAOK==\"11\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"3\"))\n" +
            "    ,5,if(((Q4a.NAOK==\"1\" && Q4b.NAOK==\"4\") || (Q4a.NAOK==\"1\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"1\" && Q4b.NAOK==\"6\")|| \n" +
            "            (Q4a.NAOK==\"1\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"2\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"3\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"3\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"4\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"4\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"5\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"8\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"9\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"9\" && Q4b.NAOK==\"2\")||                \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"2\"))\n" +
            "    ,6,if(((Q4a.NAOK==\"1\" && Q4b.NAOK==\"3\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"2\"))\n" +
            "    ,7,if(((Q4a.NAOK==\"1\" && Q4b.NAOK==\"1\") || (Q4a.NAOK==\"1\" && Q4b.NAOK==\"2\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"1\") || \n" +
            "            (Q4a.NAOK==\"3\" && Q4b.NAOK==\"1\"))\n" +
            "    ,8,\"\"))))))))}";

i followed the link. But did not help me. How to convert string to Boolean condition?

解决方案

Returning code from server is terrible awful. Anyways, this code I give you do some steps:

  1. removes new lines and multispaces into one length space from input.
  2. finds words by pattern where word starts with if and ends with digits. Adds them to array.
  3. prepares pattern with user chosen options combining into similar to (Q4a.NAOK==\"7\" && Q4b.NAOK==\"5\") (answer 1 and answer2).
  4. checking if array contains word like in point 3. If found, retains word from array and split by comma. Second word from splitting is the answer.


private void doStuff() {
    int answer1 = 2;
    int answer2 = 1;

    String s = "{hidSection=if(((Q4a.NAOK==\"5\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"6\" && Q4b.NAOK==\"7\")|| \n" +
            "            (Q4a.NAOK==\"7\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"7\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"7\" && Q4b.NAOK==\"7\")|| \n" +
            "            (Q4a.NAOK==\"8\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"7\"))\n" +
            "    ,1,if(((Q4a.NAOK==\"4\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"4\" && Q4b.NAOK==\"7\") || (Q4a.NAOK==\"5\" && Q4b.NAOK==\"5\")||\n" +
            "            (Q4a.NAOK==\"5\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"7\" && Q4b.NAOK==\"3\") || (Q4a.NAOK==\"6\" && Q4b.NAOK==\"5\")|| \n" +
            "            (Q4a.NAOK==\"7\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"7\")|| \n" +
            "            (Q4a.NAOK==\"11\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"5\"))\n" +
            "    ,2,if(((Q4a.NAOK==\"4\" && Q4b.NAOK==\"5\") || (Q4a.NAOK==\"5\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"4\")|| \n" +
            "            (Q4a.NAOK==\"7\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"7\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"5\")|| \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"6\")|| (Q4a.NAOK==\"9\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"6\")|| \n" +
            "            (Q4a.NAOK==\"11\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"12\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"12\" && Q4b.NAOK==\"4\"))\n" +
            "    ,3,if(((Q4a.NAOK==\"2\" && Q4b.NAOK==\"6\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"3\" && Q4b.NAOK==\"6\")|| \n" +
            "            (Q4a.NAOK==\"3\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"4\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"5\" && Q4b.NAOK==\"3\")|| \n" +
            "            (Q4a.NAOK==\"6\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"4\")|| \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"4\"))\n" +
            "    ,4,if(((Q4a.NAOK==\"2\" && Q4b.NAOK==\"4\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"3\" && Q4b.NAOK==\"4\")||                (Q4a.NAOK==\"3\" && Q4b.NAOK==\"5\")|| \n" +
            "            (Q4a.NAOK==\"4\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"5\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"6\" && Q4b.NAOK==\"1\")|| \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"4\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"4\")|| \n" +
            "            (Q4a.NAOK==\"11\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"2\")|| (Q4a.NAOK==\"11\" && Q4b.NAOK==\"3\"))\n" +
            "    ,5,if(((Q4a.NAOK==\"1\" && Q4b.NAOK==\"4\") || (Q4a.NAOK==\"1\" && Q4b.NAOK==\"5\")|| (Q4a.NAOK==\"1\" && Q4b.NAOK==\"6\")|| \n" +
            "            (Q4a.NAOK==\"1\" && Q4b.NAOK==\"7\")|| (Q4a.NAOK==\"2\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"3\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"3\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"4\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"4\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"5\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"8\" && Q4b.NAOK==\"2\")|| \n" +
            "            (Q4a.NAOK==\"8\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"9\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"9\" && Q4b.NAOK==\"2\")||                \n" +
            "            (Q4a.NAOK==\"9\" && Q4b.NAOK==\"3\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"1\")|| (Q4a.NAOK==\"10\" && Q4b.NAOK==\"2\"))\n" +
            "    ,6,if(((Q4a.NAOK==\"1\" && Q4b.NAOK==\"3\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"2\"))\n" +
            "    ,7,if(((Q4a.NAOK==\"1\" && Q4b.NAOK==\"1\") || (Q4a.NAOK==\"1\" && Q4b.NAOK==\"2\") || (Q4a.NAOK==\"2\" && Q4b.NAOK==\"1\") || \n" +
            "            (Q4a.NAOK==\"3\" && Q4b.NAOK==\"1\"))\n" +
            "    ,8,\"\"))))))))}";

    String answer = getAnswer(answer1, answer2, s);
    Log.d("xxx", "answer:" + answer);
}

private String getAnswer(int answer1, int answer2, String s) {
    //remove spaces 2 or more length and replace to 1
    s = s.replaceAll("\n", "");
    s = s.replaceAll("\\s+", " ");

    ArrayList<String> states = new ArrayList<String>();

    Pattern p = Pattern.compile("if\\({3}.*?\\,\\d+");
    Matcher m = p.matcher(s);
    while (m.find()) {
        states.add(m.group());
    }

    String stateFormat = "Q4a.NAOK==\"%d\" && Q4b.NAOK==\"%d\"";
    String stateFormatted = String.format(stateFormat, answer1, answer2);

    for (int i = 0; i < states.size(); i++) {
        if (states.get(i).contains(stateFormatted)) {
            String[] items = states.get(i).split(",");
            if (items.length > 1) {
                return items[1].trim();
            }
        }
    }

    return null;//or null or integer -1
}

这篇关于如何字符串转换为布尔条件的Java / Android的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆