2013-02-16 71 views
1

有沒有辦法解析在字符串中的運算符用於方程?解析字符串與公式vb

例:「5 + 4」

在這種情況下,5個和4是字符串,但我可以通過使用一個for循環他們解析到整數,是嗎?但是+運營商呢?

好吧,我用ChrisF的解決方案

+1

你必須標記字符串,然後對運算符進行顯式檢查:'if(token ==「+」)'等等。 – ChrisF 2013-02-16 22:59:53

+0

基本上就是這樣,是的。 – ChrisF 2013-02-16 23:06:07

+0

如果每個操作員都有點擊按鈕事件,我將如何使用令牌部分? – toilabav90 2013-02-16 23:06:23

回答

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) 

這只是一個簡單的快速和骯髒的解決方案。我在學校學習的方式(許多月前)是用堆棧來完成這些類型的問題。複雜的數學字符串可以使用堆棧進行分析。

+0

+1提堆! – 2013-02-17 03:40:30