2013-07-29 7 views
1

나는 수학 공식을 문자열 형식으로 가지고 있습니다.NSString을 + 연산자로 직접 변환 할 수 있습니까?

변환하는 방법이 있나요 @ "+"(문자열 상수) 직접 내가이 방정식을 해결하기 위해 IF-else 문을 사용할 필요가 목표 C 또는

에서 또한 운영자에 ??

+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

이이

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

위의 코드는 예외가 발생합니다 다른 올바른 형식을 입력 있는지 확인하십시오 달성하기 위해 NSExpression를 사용할 수 있습니다.

관련 문제