1
我正在爲使用DDMathParser的iOS構建計算器應用程序。 我想知道如何將表達式(NSString
)(如5+900/32
)分隔爲其各個數值:5
,900
和32
。我寧願我在NSArray
或其他相對有用的列表對象中得到這些。我聽說有一個簡單的方法可以做到這一點DDMathParser
- 這就是爲什麼我從GCMathParser
切換。iOS DDMathParser獲取數字「塊」
我正在爲使用DDMathParser的iOS構建計算器應用程序。 我想知道如何將表達式(NSString
)(如5+900/32
)分隔爲其各個數值:5
,900
和32
。我寧願我在NSArray
或其他相對有用的列表對象中得到這些。我聽說有一個簡單的方法可以做到這一點DDMathParser
- 這就是爲什麼我從GCMathParser
切換。iOS DDMathParser獲取數字「塊」
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.
哇!謝謝!很高興作者能回答這個問題! – Undo