String parsen - Frage, wie am besten?

29/07/2009 - 20:35 von Claudia Maier | Report spam
http://www1.minpic.de/bild_anzeigen.php?id301&keys357548&ende
http://www.fileuploadx.de/633811

Hallo,

ich habe einen String, wie z.B. 5+6*(8+4*3).
Dies möchte ich gerne berechnen.

Idee:
Liste, dann Punkt vor Strich.
Das müsste doch rekursiv zu lösen sein.
Hat jemand eine gute Idee, einen Tipp?
Anbei mein Code.

Vor allem kann es ja auch das der Fall sein.
8+4*3+8+4*3

Viele Grüße Claudia

Dim i As Integer
Dim numberPreview As String
Dim numberSuccessor As String

Dim result As Double
Dim number1 As Double
Dim number2 As Double

For Each numbers As String In ListFigure
If objectList = numbers Then
numberPreview = ListFigure.ElementAt(i - 1)
numberSuccessor = ListFigure.ElementAt(i + 1)

ListFigure.RemoveAt(i - 1)
ListFigure.RemoveAt(i - 1)
ListFigure.RemoveAt(i - 1)

number1 = Convert.ToDouble(numberPreview)
number2 = Convert.ToDouble(numberSuccessor)

result = number1 * number2

ListFigure.Insert(i - 1, result.ToString())

Exit For

End If
i = i + 1
Next

objectList = "+"
i = 0
For Each numbers As String In ListFigure
If objectList = numbers Then
numberPreview = ListFigure.ElementAt(i - 1)
numberSuccessor = ListFigure.ElementAt(i + 1)

ListFigure.RemoveAt(i - 1)
ListFigure.RemoveAt(i - 1)
ListFigure.RemoveAt(i - 1)

number1 = Convert.ToDouble(numberPreview)
number2 = Convert.ToDouble(numberSuccessor)

result = number1 + number2

ListFigure.Insert(i - 1, result.ToString())

Exit For

End If
i = i + 1
Next

CalculationString = result.ToString()
 

Lesen sie die antworten

#1 Elmar Boye
29/07/2009 - 20:51 | Warnen spam
Hallo Claudia,

Claudia Maier schrieb:
ich habe einen String, wie z.B. 5+6*(8+4*3).
Dies möchte ich gerne berechnen.

Idee:
Liste, dann Punkt vor Strich.
Das müsste doch rekursiv zu lösen sein.
Hat jemand eine gute Idee, einen Tipp?
Anbei mein Code.

Vor allem kann es ja auch das der Fall sein.
8+4*3+8+4*3



Für Taschenrechner und mehr empfehle ich die Lektüre von
Nikolas Wirth - Compilerbau
http://www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf
Ist zwar kein VB und kein .NET, aber die Konzepte
sind universell.

Gruß Elmar

Ähnliche fragen