2014-09-01 40 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

相關問題