1
有没有办法解析在字符串中的运算符用于方程?解析字符串与公式vb
例:“5 + 4”
在这种情况下,5个和4是字符串,但我可以通过使用一个for循环他们解析到整数,是吗?但是+运营商呢?
好吧,我用ChrisF的解决方案
有没有办法解析在字符串中的运算符用于方程?解析字符串与公式vb
例:“5 + 4”
在这种情况下,5个和4是字符串,但我可以通过使用一个for循环他们解析到整数,是吗?但是+运营商呢?
好吧,我用ChrisF的解决方案
的海报似乎已经解决了他的问题,但以防万一有人发现这个帖子找我做了一个非常简单的解决答案。
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)
这只是一个简单的快速和肮脏的解决方案。我在学校学习的方式(许多月前)是用堆栈来完成这些类型的问题。复杂的数学字符串可以使用堆栈进行分析。
+1提堆! – 2013-02-17 03:40:30
你必须标记字符串,然后对运算符进行显式检查:'if(token ==“+”)'等等。 – ChrisF 2013-02-16 22:59:53
基本上就是这样,是的。 – ChrisF 2013-02-16 23:06:07
如果每个操作员都有点击按钮事件,我将如何使用令牌部分? – toilabav90 2013-02-16 23:06:23