如何字符串转换为布尔条件的Java / Android的? [英] How to convert string to boolean condition in 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我给你做的一些步骤:
- 在去除新线和multispaces为从输入1个长度空间。
- 查找单词由图案,其中字开头
如果
和数字结束。并将它们添加到数组中。 - prepares模式与用户所选择的选项组合成类似于
(Q4a.NAOK == \7 \&放大器;&安培; Q4b.NAOK == \5 \)
(答案1和answer2)。 - 检查,如果数组包含字像点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:
- removes new lines and multispaces into one length space from input.
- finds words by pattern where word starts with
if
and ends with digits. Adds them to array. - prepares pattern with user chosen options combining into similar to
(Q4a.NAOK==\"7\" && Q4b.NAOK==\"5\")
(answer 1 and answer2). - 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屋!