iOS DDMathParser获取数字“块”

我正在使用DDMathParser为iOS构build一个计算器应用程序。 我想知道如何将一个expression式( NSString )(如5+900/32 NSString )分解为单独的数字值: 90032 我宁愿我得到这些在一个NSArray或其他相对有用的列表对象。 我听说有一个简单的方法来做到这一点与DDMathParser – 这就是为什么我从GCMathParser切换。

DDMathParser作者在这里。

是的,这很容易,有几种方法可以解决这个问题。 如果你只是想要什么数字,不关心操作员,你可以使用标记 API:

 NSError *tokenizingError = nil; DDMathStringTokenizer *tokenizer = [DDMathStringTokenizer tokenizerWithString:@"5+900/32" error:&tokenizingError]; NSArray *tokens = [tokenizer tokens]; NSMutableArray *numbers = [NSMutableArray array]; for (DDMathStringToken *token in tokens) { if ([token tokenType] == DDTokenTypeNumber) { [numbers addObject:[token numberValue]]; } } // numbers now is @[ @5, @900, @32 ]; 

然而,这种方法有一个警告,用这个例子可以很好地说明: @"-42" 。 DDMathParser中的令牌总是被parsing为无符号数字,因为前面的减号实际上是一个运算符,并且根据其他运算符的不同而得到不同的应用。 这意味着,如果将string@"-42"标记为string,则会看到它包含两个标记:否定运算符和数字42。