1

I have a mathematical equation in string format.

Is there a way to convert @"+"(String constant) directly to addition operator in objective C Or

I have to use If-Else statements to solve this equation ??

3 Answers3

3
NSPredicate * parsed = [NSPredicate predicateWithFormat:@"123+456+678-985 = 0"];
NSExpression * left = [(NSComparisonPredicate *)parsed leftExpression];
NSNumber * result = [left expressionValueWithObject:nil context:nil];
float i = [result floatValue];
0xSina
  • 19,923
  • 31
  • 130
  • 250
  • 1
    You don't need the predicate, compare http://stackoverflow.com/questions/12500232/i-have-formula-in-a-nsstring-how-to-evaluate-it/12500518#12500518. – Martin R Jul 29 '13 at 17:38
0
if([yourString isEqualToString:@"+"])
{
     //Do something

}

This code should work.

Abdullah Shafique
  • 6,850
  • 8
  • 31
  • 68
0

You can use NSExpression to achieve this

NSString *expressionFormat = [NSString stringWithFormat:@"(%d %@ %d)",firstNumber,arcthimaticOperator,secondNumber];
NSExpression *expression = [NSExpression expressionWithFormat:expressionFormat];
NSNumber *result = [expression expressionValueWithObject:nil context:nil];
NSLog(@"%@", result);

Please make sure you enter the correct format else the above code will throw exception.

NSDumb
  • 1,590
  • 15
  • 19