Sieht für mich nach einem Geocache aus, meinst du nicht, dass es schneller wäre, das von Hand zu machen?
Nichtsdestotrotz... auf Basis der von dir gegebenen Beispiele:
Code:
// Parsen
1. Gehe zum Anfang des Eingabestrings.
2. Suche nächstes "(" und merke Position.
3. Suche nächstes ")" und merke Position.
4. Kopiere den Inhalt zwischen den Klammern und hänge ihn an ein Array an.
5. Suche nächstes "(" und merke Position.
6. Kopiere den Inhalt zwischen dem vorigen ")" und dem neuen "(" und hänge ihn an das Array an.
7. Wenn nicht am Ende angelangt, gehe zu 3.
// Evaluieren
8. Setze "Ergebnis" auf 0
9. Gehe zum Anfang des Arrays.
10. Nimm nächstes Element aus dem Array und evaluiere den Inhalt mittels Matheparser.
11. Nimm nächstes Element aus dem Array.
Wenn "+": Addiere Zwischenergebnis zu "Ergebnis"
Wenn "-": Subtrahiere Zwischenergebnis von "Ergebnis"
Wenn "." oder leerer String: multipliziere "Ergebnis" mit 10 und addiere Zwischenergebnis.
12. Wenn nicht am Ende des Arrays angelangt, gehe zu 10.
13. Am Ende "Ergebnis" in String umwandeln und nach den ersten beiden Ziffern einen "." einfügen.
Hab allerdings nicht verstanden wie die "+300" und "+250" beim 3. Beispiel zustande kommen... aber da du meintest, dass du bis zum Zwischenergebnis kommst, wirst du es ja wissen.