2013-07-29 4 views
1

У меня есть математическое уравнение в строчном формате.Можно ли преобразовать + в качестве оператора NSString в оператор добавления напрямую?

Есть ли способ, чтобы преобразовать @ «+» (String константы) непосредственно оператор сложения в цели C Или

я должен использовать If-Else заявление решить это уравнение ??

+0

Каков конкретный прецедент, о котором вы спрашиваете об этом? Т.е. почему вы хотите это сделать? –

+0

123 + 456 + 678-985 он находится в виде строковой константы. могу ли я преобразовать его в математическое уравнение типа (float I = 123 + 456 + 678-985) – DemonicPossessions1991

+0

Если это просто @ "+", просто сравните строки. Если вы действительно хотите оценить выражения, я предлагаю искать реализацию строковых уравнений с открытым исходным кодом. – 0xSina

ответ

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]; 
+1

Вам не нужен предикат, сравните http: // stackoverflow.com/questions/12500232/i-have-formula-in-a-nsstring-how-to-evaluate-it/12500518#12500518. –

0
if([yourString isEqualToString:@"+"]) 
{ 
    //Do something 

} 

Этот код должен работать.

+0

да, конечно. эта работа прекрасна , но я не беспокоился об этом просто хотел узнать, есть ли способ конвертировать напрямую .. :) – DemonicPossessions1991

+0

Запомнить чек :) –

0

Вы можете использовать NSExpression для достижения этой цели

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

Пожалуйста, убедитесь, что Вы ввели правильный формат еще выше код будет бросать исключение.