string.Replace

nein, die Methode Arbeitet so wie sie soll. Aber ich hab jetzt die Lösung: die Methode ist total unnütz. Ich hab sie einfach weggelassen, und es ging.

Jetzt hab ich ein anderes Problem:

Ich will dafür einen Parser schreiben, der leerzeichen auslässt, und immer das nächste zeichen liest.
Jetzt habe ich jedoch zwei neue Probleme: Das ganze wird mit dem Term

Code:
(5 + 1) + (4 x 4)

nicht Funktionieren (wegen der Bedingung). Gibt es da eine Möglichkeit die Bedingung so zu ändern, dass es Funktioniert?

Und dann noch das mit den Rechenzeichen: ich zum einen soll die Regel Punkt vor Strich Funktionieren, und zum anderen muss ich die Zwei Zahlen Speichern mir denen gerechnet wird. Mit einer Foreach schleife wirds wahrscheinlich nicht gehen, aber wie mache ich das mit einer For schleife
 
Code:
while (term.Contains("(") && term.Contains(")"))
            {
                num = term.IndexOf("(");
                num2 = term.LastIndexOf(")");
                term = term.Replace(term.Substring(num - 1, num2 - num + 2), Roll_Makro(term.Substring(num + 1, num2 - num - 1)).ToString());
            }

so sieht das im moment aus.

Wenn jetzt term (2 x 9) + (3 +7) ist, dann wird der Funktion Roll_Makro der string 2 x 9) + (3 + 7 übergeben. Ich will der Funktion aber erst 2 x 9 und dann 3 + 7 übergeben.

Wenn ich nicht num2 = term.LastIndexOf(")"); sondern num2 = term.IndexOf(")"); schreibe, und der Funktion den term ((3 + 5) x 5) : 2 übergebe, dann wird Roll_Makro dagegen mit dem string (3 + 5 x 5) : 2 ausgeführt. Das ist nicht das gleiche.

Das mit der schleife hat sich erldedigt ich hab nur einen Denkanstoss gebraucht :)
 
Zuletzt bearbeitet:
Hallo.

Nur kurz mal ein anderer Ansatz zur Problemlösung:

Du könntest vor Auswertung den Term in die Postfix-Notation umwandeln. Das Auswerten geht dann ein wenig einfacher...

Hier eine Seite mit Anleitungen zur Umwandlung von Infix zu Postfix, und zur Auswertung von Postfix.

lg, Alex
 
Zurück