Парсинг строки в уравнение с VB

Есть ли способ разбора операторов в строке для использования в уравнении?

Пример: "5 + 4"

В этом случае 5 и 4 являются строками, но я могу разобрать их в целое, используя цикл for, верно? Но как насчет оператора +?

Хорошо, я использовал решение ChrisF

1 ответ

Постер, похоже, решил его проблему, но на всякий случай, если кто-то найдет этот пост в поисках ответа, я сделал очень простое решение.

        Dim s As String = "5 * 4" 'our equation
        s = s.Replace(" ", "") 'remove spaces
        Dim iTemp As Double = 0 'double (in case decimal) for our calculations
        For i As Integer = 0 To s.Length - 1 'standard loop
            If IsNumeric(s(i)) Then
                iTemp = Convert.ToInt32(s(i)) - 48 'offset by 48 since it gets ascii value when converted
            Else
                Select Case s(i)
                    Case "+"
                        'note s(i+1) looks 1 index ahead
                        iTemp = iTemp + (Convert.ToInt32(s(i + 1)) - 48)'solution
                    Case "-"
                        iTemp = iTemp - (Convert.ToInt32(s(i + 1)) - 48)'solution
                    Case "*"
                        iTemp = iTemp * (Convert.ToInt32(s(i + 1)) - 48)'solution
                    Case "/"
                        'you should check for zero since x/0 = undefined
                        iTemp = iTemp / (Convert.ToInt32(s(i + 1)) - 48)'solution
                End Select
                Exit For 'exit since we are done
            End If
        Next
        MsgBox(iTemp.ToString)

Это просто быстрое и грязное решение. То, как я учился в школе (много-много лун назад), заключалось в том, чтобы решать подобные проблемы со стеками. Сложные математические строки могут быть проанализированы с использованием стеков.

Другие вопросы по тегам