将数学方程的NSString转换为值

Pun*_*hit 7 cocoa cocoa-touch objective-c expression-evaluation nsstring

我想知道如何评估方程的字符串表示,就好像它是一个真实的方程:

if(@"15+14==23")
{
    //True statement...
}
else
{
    //False statement....
}
Run Code Online (Sandbox Code Playgroud)

我想返回"假",因为15 + 14不等于23.我怎么能让它工作?

das*_*ght 7

这是一个如何使用的示例NSPredicate:

NSPredicate *p = [NSPredicate predicateWithFormat:@"1+2==3"];
NSLog(@"%d", [p evaluateWithObject:nil]);
p = [NSPredicate predicateWithFormat:@"1+2==4"];
NSLog(@"%d", [p evaluateWithObject:nil]);
Run Code Online (Sandbox Code Playgroud)

第一个NSLog产生1因为1+2==3是真的; 第二个产生0.

  • @Mithras尽管编写解析器并不难,但最好还是在高中或大学时进行练习.我自己写了十几个解析器,而我的前三个或四个是大多数实用标准的丢失代码.我的观点是,学习练习和生产代码最好分开. (2认同)