0

テキスト フィールドには、次のような数式が含まれています12+45-6。この文字列を数値に変換することは可能ですか?

述語機能を使用できますか?

NSString *foo = @"((a*b)/c+(d/5))+15";
// dummy predicate that contains our expression
NSPredicate *pred = [NSPredicate predicateWithFormat:[foo stringByAppendingString:@" == 42"]];
NSExpression *exp = [pred leftExpression];
NSNumber *result = [exp expressionValueWithObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:4], @"a",[NSNumber numberWithInt:7], @"b",[NSNumber numberWithInt:2], @"c",[NSNumber numberWithInt:20], @"d",nil]context:nil];
NSLog(@"%@", result); // logs "33"<br/>

これも見つけましたhttps://github.com/unixpickle/ANExpressionParser

4

4 に答える 4

2

外部ライブラリに依存しない解決策の 1 つは、最初に文字列を一連のトークンに変換し、次に単純なスタック マシンにチェーンされた分路アルゴリズムを使用して式を評価することです。

于 2011-07-24T21:47:32.433 に答える
1

パーサーを使用してこの入力を解析してから評価する必要があります。自分で書く手間を省くために、muParserを使って成功している人の話を聞いたことがあります。見てみな。 http://muparser.sourceforge.net/

于 2011-07-24T21:51:10.363 に答える
0

はい、もちろん可能です。

スタックを使用して、中置から後置への変換を調べる必要があります:http ://scriptasylum.com/tutorials/infix_postfix/algorithms/infix-postfix/index.htm

次に、スタックを使用して、postix式を評価する方法を調べます:http ://scriptasylum.com/tutorials/infix_postfix/algorithms/postfix-evaluation/index.htm

于 2011-07-24T21:51:37.797 に答える
0

はい。「式の評価」を読むか、既製のスクリプト インタープリターを使用してください。JavaScript は、WebView の一部としてすべての iOS プログラムで使用できます。

于 2011-07-24T21:47:27.207 に答える