DDMathParserを使用してiOS用の電卓アプリを作成しています。式( )likeを個々の数値に分離する方法を知りたい: 、、、。NSString
5+900/32
5
900
32
これらを、NSArray
または他の比較的有用なリストオブジェクトで取得することをお勧めします。これを行う簡単な方法があると聞きましたDDMathParser
-それが私がから切り替えた理由ですGCMathParser
。
質問する
193 次
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の2つの@"-42"
トークンが含まれていることがわかります。
于 2013-01-26T18:47:20.650 に答える