Калькулятор категорий NSString

Я пытаюсь найти способ вычислить результат из NSString. Есть ли простая категория калькулятора NSString?

NSString *str = @"10+20/2";
int result = [[str stringByCalculatingResult] intValue];
NSLog (@"result:%i", result);

Предпочитает вывод:

result:20

Спасибо за решение.

Категория:

//NSString+Calculator.h
@interface NSString (Calculator)
- (NSString*)stringByCalculatingResult;
@end

//NSString+Calculator.m
@implementation NSString (Calculator)
- (NSString*)stringByCalculatingResult
{
    NSExpression *expression = [NSExpression expressionWithFormat:self];
    NSNumber *value = [expression expressionValueWithObject:nil context:nil];
    return [value stringValue];
}
@end

person rozochkin    schedule 30.07.2013    source источник
comment
как насчет использования NSPredicate? stackoverflow.com/questions/8618005/   -  person Alberto Vitale    schedule 30.07.2013
comment
возможный дубликат Как оценить строковое уравнение в ios   -  person Martin R    schedule 30.07.2013
comment
возможный дубликат Objective-C Расчет строкового значения   -  person Daniel    schedule 30.07.2013


Ответы (2)


Вы должны рассмотреть использование класса NSExpression, который может вычислять математические выражения для вас:

NSExpression *expression = [NSExpression expressionWithFormat:@"10 + 20 / 2"];
id value = [expression expressionValueWithObject:nil context:nil];
person Wain    schedule 30.07.2013

Вы можете взглянуть на эту библиотеку математического анализатора

person zahreelay    schedule 30.07.2013