Tak, to jest problem, który moim zdaniem jest dużo bardziej skomplikowana niż związane pytanie pozwala na (chociaż pytanie jest pytaniem o „proste” równanie parsera).
Na szczęście dla ciebie, myślę, że jest to naprawdę interesujący problem i napisałem już dla ciebie: DDMathParser
.
Ma numer good amount of documentation, w tym rzeczy takie jak how to add it to your project i high overview of its capabilities. Obsługuje all of the standard mathematical operators, w tym operatorów logicznych i porównawczych (||
, &&
, ==
, !=
, <=
, etc).
W twoim przypadku, można by zrobić coś takiego:
NSNumber *result = [@"15+14 == 23" numberByEvaluatingString];
if ([result boolValue] == YES) {
....True statement....
} else {
.....False statement.....
}
jako heads-up, DDMathParser
jest udostępniane na licencji MIT, który wymaga do zawierają informacje o prawach autorskich i pełny tekst licencja na wszystko, co jej używa.
możliwe duplikat [Napisanie prostego równania parser] (http://stackoverflow.com/questions/4582398/writing-a-simple-equation-parser) –
Czy te struny pochodzące ze źródła danych, lub dane wejściowe użytkownika? Będziesz musiał dowiedzieć się, jakie rodzaje równań matematycznych chcesz wspierać, a następnie stamtąd. (czyli jakie operandy, ile operandów i czy użytkownik kiedykolwiek napisze ==) (Czy potrzebujesz wsparcia dla 1 * 1 * 1 * 1x1 * 1 = 1?) –
Łańcuch będzie pochodził ze stałego źródła danych, są Liczby od 0 - 20, równanie (+ - * /) i równe (==) –