2014-09-01 38 views
0

我有三个例子,其中我必须评估表达,实例如下,算术和条件表达式评估器(包含字符串和值)

  1. (x + y +30)

  2. ((p == "Good") && (q == "Morning")) || (r == "10:00")

  3. ((w == "Night") && ((a + b +30) >100))

这里xya,并且b是整数,pqrw都是字符串。

对于#1我使用了DDMathParser库,但对于#2和3我们不能,因为DDMathParser不允许字符串评估。

要求是评估以上表达式的任何库或示例源代码包含字符串和值。

请帮我评估一下。

任何帮助表示赞赏。

+1

您可以这样做if([p isEqualToString:@“Good”] &&([q isEqualToString:@“Morning”]))|| || ([r isEqualToString:@“10:00”])) { } – Rajesh 2014-09-01 06:14:47

回答

2

所有这些都可以使用NSPredicateNSExpression解析。您可以使用@[email protected]语句尝试并通过+[NSPredicate predicateWithFormat:]+[NSExpression expressionWithFormat:]运行它们并查看哪一个可以工作。

一旦你完成了,你可以评估他们对NSDictionary,看看会发生什么。例如:

NSString *formula = @"((w == \"Night\") && ((a + b +30) >100))"; 
NSPredicate *p = [NSPredicate predicateWithFormat:formula]; 
NSDictionary *object = @{ 
         @"w": @"Night", 
         @"a": @42, 
         @"b": @33 
         }; 

BOOL passes = [p evaluateWithObject:object]; 
NSLog(@"passes: %@", passes ? @"yes" : @"no"); // logs "yes" 
+0

感谢戴夫。我还有一个问题,NSString * formula = @“form_component_1?lower_case?contains(\”boa \“)”“。其中form_component_1作为输入变量。我无法预测这一点。请帮我评估一下。 – Sandeep 2014-09-05 04:55:42

相关问题