1

我正在使用 DDMathParser 为 iOS 构建一个计算器应用程序。我想知道如何将表达式 ( NSString)分开5+900/32为其单独的数值:590032. 我宁愿将这些放在一个NSArray或其他相对有用的列表对象中。我听说有一种简单的方法可以做到这一点DDMathParser- 这就是我从GCMathParser.

4

1 回答 1

1

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 中的标记总是被解析为无符号数字,因为前面的减号实际上是一个运算符,并且根据其他运算符的应用不同。这意味着如果您对字符串进行标记@"-42",您将看到它包含两个标记:一个否定运算符和数字 42。

于 2013-01-26T18:47:20.650 回答