【问题标题】:iOS DDMathParser Get Number 'Blocks'iOS DDMathParser 获取数字“块”
【发布时间】:2013-01-19 18:34:35
【问题描述】:

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

【问题讨论】:

    标签: ios nsstring numbers expression calculator


    【解决方案1】:

    DDMathParser 作者在这里。

    是的,这很容易,并且有几种方法可以解决。如果您只是想要数字是什么而不关心运算符,您可以使用tokenizing 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 中的标记总是被解析为 unsigned 数字,因为前面的减号实际上是一个运算符,并且根据其他运算符的不同应用不同。这意味着如果您对字符串 @"-42" 进行标记,您将看到它包含 两个 标记:一个否定运算符和数字 42。

    【讨论】:

    • 哇!谢谢!很高兴作者能回答这个问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多