Java Data Processing and java Big Data Processing
For example, "(TYPE = SITA #) & (CTYP = FPL #) | (CTYP = CHG #) | (CTYP = CNL ##) | (CTYP = DLA #) | (CTYP = DL #) | (CTYP = ED #) & (ADEP = ZSSS ##)) "string, which usually appears as a condition for determining a thing. The final result of the entire condition must be calculated (true/false ).
The following Java code is provided:
1 package com. test; 2 3 import net. sourceforge. jeval. evaluator; 4 5 public class T1 {6 7 public static void main (String [] args) throws Exception {8 String condition = "(TYPE = SITA ##) & (CTYP = FPL #) | (CTYP = CHG #) | (CTYP = CNL #) | (CTYP = DLA ##) | (CTYP = DL #) | (CTYP = ED #) & (ADEP = ZSSS #) "; 9 condition = replaceExpression (condition, "TYPE =", "SITA", "="); 10 condition = replaceExpression (condition, "CTYP = "," FPL "," = "); 11 condition = replaceExpression (condition," ADEP = "," "," = "); 12 System. out. println ("condition:" + condition); // condition :( 1) & (1) | (0) | (0) | (0) | (0) | (0) & (0) 13 14/** 15 * digital expression parsing tool 16 * Evaluator Needs to download the jeval package, link 17 */18 Evaluator evaluator = new Evaluator (); 19 boolean B = evaluator. getBooleanResult (condition); // false 20 System. out. println (B); 21 System. out. println (e Valuator. evaluate ("2 + 3 ")); // 5.0 22 23} 24 25/** 26*27 * @ param condition 28 * @ param replace 29 * @ param toBeCompared 30 * @ param operators 31 * @ return 32 *@ throws Exception will throw an Exception 33 */34 public static String replaceExpression (String condition, string replace, 35 String toBeCompared, String operators) throws Exception {36 while (condition. contains (replace) {37 int start = condi Tion. indexOf (replace); 38 int end = condition. indexOf ("#", start); 39 String express = condition. substring (start, end); 40 express = express. substring (replace. length (); 41 if ("> = ". equals (operators) {42 43 if (Long. parseLong (toBeCompared)> = Long. parseLong (express) {44 condition = condition. substring (0, start) + "1" 45 + condition. substring (end + 2); 46} else {47 condition = condition. subs Tring (0, start) + "0" 48 + condition. substring (end + 2); 49} 50} else if ("<= ". equals (operators) {51 if (Long. parseLong (toBeCompared) <= Long. parseLong (express) {52 condition = condition. substring (0, start) + "1" 53 + condition. substring (end + 2); 54} else {55 condition = condition. substring (0, start) + "0" 56 + condition. substring (end + 2); 57} 58} else if ("> ". equals (operators) {59 6 0 if (Long. parseLong (toBeCompared)> Long. parseLong (express) {61 condition = condition. substring (0, start) + "1" 62 + condition. substring (end + 2); 63} else {64 condition = condition. substring (0, start) + "0" 65 + condition. substring (end + 2); 66} 67} else if ("<". equals (operators) {68 if (Long. parseLong (toBeCompared) <Long. parseLong (express) {69 condition = condition. substring (0, start) + "1" 70 + condition. substring (end + 2); 71} else {72 condition = condition. substring (0, start) + "0" 73 + condition. substring (end + 2); 74} 75} else if ("! = ". Equals (operators) {76 if (! Express. equals (toBeCompared) {77 condition = condition. substring (0, start) + "1" 78 + condition. substring (end + 2); 79} else {80 condition = condition. substring (0, start) + "0" 81 + condition. substring (end + 2); 82} 83} else {84 if ("RADDRESS = ". equals (replace) {85 String [] toBeComparedArray = toBeCompared. split (""); 86 String flag = "0"; 87 for (String toBeComparedString: toBeComparedArray) {88 if (express. equals (toBeComparedString) {89 flag = "1"; 90 break; 91} 92} 93 condition = condition. substring (0, start) + flag 94 + condition. substring (end + 2); 95 96} else {97 if (express. equals (toBeCompared) {98 condition = condition. substring (0, start) + "1" 99 + condition. substring (end + 2); 100} else {101 condition = condition. substring (0, start) + "0" 102 + condition. substring (end + 2); 103} 104} 105} 106} 107 return condition; 108} 109}
Related jar package download: http://files.cnblogs.com/files/x-jingxin/jeval.zip