public static bool CompareString(string expr) { expr = expr.Replace(" ", ""); expr = expr.Replace("()", "true").Replace(")(", ")&&("); string[] sa = MiMFa_StringService.GetAllWordsBetween(expr, "(", ")", true).ToArray(); if (sa.Length > 0) { string[] sanew = new string[sa.Length]; for (int i = 0; i < sa.Length; i++) { sanew[i] = CompareString(sa[i].Replace("(", "").Replace(")", "")).ToString(); } expr = MiMFa_StringService.ReplaceWithAllByOrder(expr, sa, sanew); } expr = expr.Trim(); expr = LikeLapSignC(expr, "<=", ">=", "<", ">"); expr = LikeLapSignC(expr, "!==", "===", "~==", "~=", "!=", "=="); expr = LikeLapSignC(expr, "&&", "||"); return(MiMFa_Convert.ToBoolean(expr)); }
public static bool CompareString(object op1, string sign, object op2) { try { Func <object, object> normal = (o) => { if (!string.IsNullOrEmpty(o.ToString())) { return(o); } return(true); }; op1 = normal(op1); op2 = normal(op2); double d1; double d2; bool b1; bool b2; switch (sign) { case "===": return(op1.Equals(op2)); case "!==": return(!op1.Equals(op2)); case "==": return(op1.ToString() == op2.ToString()); case "!=": return(op1.ToString() != op2.ToString()); case "~==": return(op1.GetType() == op2.GetType() && MiMFa_StringService.ComparePerCent(op1.ToString(), op2.ToString()) > 70); case "~=": return(MiMFa_StringService.ComparePerCent(op1.ToString(), op2.ToString()) > 70); case ">": d1 = MiMFa_Convert.ForceToDouble(op1); d2 = MiMFa_Convert.ForceToDouble(op2); return(d1 > d2); case "<": d1 = MiMFa_Convert.ForceToDouble(op1); d2 = MiMFa_Convert.ForceToDouble(op2); return(d1 < d2); case ">=": d1 = MiMFa_Convert.ForceToDouble(op1); d2 = MiMFa_Convert.ForceToDouble(op2); return(d1 >= d2); case "<=": d1 = MiMFa_Convert.ForceToDouble(op1); d2 = MiMFa_Convert.ForceToDouble(op2); return(d1 <= d2); case "&&": b1 = MiMFa_Convert.ToBoolean(op1); b2 = MiMFa_Convert.ToBoolean(op2); return(b1 && b2); case "||": b1 = MiMFa_Convert.ToBoolean(op1); b2 = MiMFa_Convert.ToBoolean(op2); return(b1 || b2); case "is": return(op1.GetType() == op2.GetType()); } DataTable dt = new DataTable(); return(Convert.ToBoolean(dt.Compute(op1 + sign + op2, "")));; } catch { throw new Exception("Invalid character."); } }