2013-01-19 62 views
1

我正在爲使用DDMathParser的iOS構建計算器應用程序。 我想知道如何將表達式(NSString)(如5+900/32)分隔爲其各個數值:5,90032我寧願我在NSArray或其他相對有用的列表對象中得到這些。我聽說有一個簡單的方法可以做到這一點DDMathParser - 這就是爲什麼我從GCMathParser切換。iOS DDMathParser獲取數字「塊」

回答

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中的令牌總是被解析爲無符號的數字,因爲前面的減號實際上是一個運算符,根據其他運算符的不同而不同。這意味着如果您將字符串標記爲@"-42",您會看到它包含兩個標記:否定運算符和數字42.

+0

哇!謝謝!很高興作者能回答這個問題! – Undo