【问题标题】:parsing string to equation with vb用vb将字符串解析为方程
【发布时间】:2013-02-16 22:57:59
【问题描述】:

有没有办法解析字符串中的运算符以在方程式中使用?

示例:“5 + 4”

在这种情况下,5 和 4 是字符串,但我可以使用 for 循环将它们解析为整数,对吗?但是 + 运算符呢?

好的,我使用了 ChrisF 的解决方案

【问题讨论】:

  • 您必须对字符串进行标记,然后对运算符进行显式检查:if (token == "+") 等。
  • 基本上就是这样,是的。
  • 如果每个运算符都有点击按钮事件,我将如何使用令牌部分?
  • 您必须更新您的问题并发布更多代码以显示您实际想要实现的目标。

标签: asp.net vb.net string visual-studio parsing


【解决方案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)

这只是一个简单的快速而肮脏的解决方案。我在学校(许多个月前)学到的方法是用堆栈来解决这些类型的问题。可以使用堆栈解析复杂的数学字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多