我有一个创建一个将公式作为 NSString 的函数。而且我必须替换字符串中的一些东西并在执行公式后获取值。我怎样才能做到这一点...
例如:NSString *formulaString = @"((A/B)-1)*100";
现在我可以将 A 替换为 20,将 B 替换为 10。但是如何将 ((20/10)-1)*100 的计算值替换为 100
谢谢,本
我有一个创建一个将公式作为 NSString 的函数。而且我必须替换字符串中的一些东西并在执行公式后获取值。我怎样才能做到这一点...
例如:NSString *formulaString = @"((A/B)-1)*100";
现在我可以将 A 替换为 20,将 B 替换为 10。但是如何将 ((20/10)-1)*100 的计算值替换为 100
谢谢,本
你必须建立表达式计算器。我知道的一个开源目标 C 库是GCMathParser
如果您的公式不是太复杂,您可以使用NSExpression
:
NSExpression *e = [NSExpression expressionWithFormat:@"((20/10)-1)*100"];
NSNumber *result = [e expressionValueWithObject:nil context:nil];
NSLog(@"%@", result);
// Output: 100
这甚至适用于某些功能,例如sqrt
, exp
, ... 请参阅NSExpression
文档以获取支持的功能列表。
您将需要编写一个数学表达式解析器,它接受NSString *
输入并产生数字输出。
您可以通过此方法替换字符
NSString *formulaString = @"((A/B)-1)*100";
NSString *modifiedFormulaString = [formulaString stringByReplacingOccurrencesOfString:@"A" withString:@"10"];
modifiedFormulaString = [modifiedFormulaString stringByReplacingOccurrencesOfString:@"B" withString:@"10"];
但是要计算 dat,你需要使用一些解析器来解析它。