ios中的算术和条件表达式求值程序(包含字符串和值)

时间:2014-09-01 06:11:22

标签: ios objective-c iphone

我有三个例子,我必须评估表达式,例如,

  1. (x + y +30)

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

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

  4. 此处xyab是整数,pqrw是字符串。

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

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

    请帮我评估一下。

    任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

所有这些都可以使用NSPredicateNSExpression进行解析。您可以使用@try...@catch语句尝试通过+[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"