當前位置:編程學習大全網 - 編程語言 - 怎樣編寫VB對有漢字或字母且有中括號(括號內有文字或數字)的計算式進行計算?

怎樣編寫VB對有漢字或字母且有中括號(括號內有文字或數字)的計算式進行計算?

可以先多字符進行處理,簡化公式,然後在對表達式進行處理。

Private Sub Command1_Click()

Dim t As String, cs(10) As String, b() As String, c() As String, jg As Single

' 尋對這類計算式進行計算得到結果16.08:1m*2m+3m*2m[2軸右]+[3軸左]5.2㎡+梁1.2m*2.4m

t = "1m*2m+3m*2m[2軸右]+[3軸左]5.2㎡+梁1.2m*2.4m"

cs(10) = t

cs(0) = "0123456789.+-*/"

cs(1) = 0

cs(3) = ""

'去除中括號裏的內容

For j = 1 To Len(t)

cs(2) = Mid(t, j, 1)

If cs(2) = "[" Then

cs(1) = 1

ElseIf cs(2) = "]" Then

cs(1) = 0

End If

If cs(1) = 0 Then

cs(3) = cs(3) & cs(2)

End If

Next

t = Replace(cs(3), "]", "")

' Debug.Print t

'去中文及單位等多余字符

cs(4) = ""

For j = 1 To Len(t)

cs(2) = Mid(t, j, 1)

If InStr(cs(0), cs(2)) > 0 Then

cs(4) = cs(4) & cs(2)

End If

Next

t = cs(4)

Debug.Print t

'拆分數字和運算符

cs(5) = Replace(t, "+", ",")

cs(5) = Replace(cs(5), "-", ",")

cs(5) = Replace(cs(5), "*", ",")

cs(5) = Replace(cs(5), "/", ",")

b() = Split(cs(5), ",") '拆分出的數字保存在數組b()中

cs(6) = ""

For j = 1 To Len(t)

cs(2) = Mid(t, j, 1)

If InStr("+-*/", cs(2)) > 0 Then

cs(6) = cs(6) & cs(2) & ","

End If

Next

cs(6) = cs(6) & "+,"

c() = Split(cs(6), ",") '拆分出的運算符保存在數組c()中

'根據運算符,進行公式的計算

jg = 0

For j = 0 To UBound(c()) - 1

If c(j) = "+" And c(j + 1) = "+" Then

jg = jg + Val(b(j)) + Val(b(j + 1))

End If

If c(j) = "+" And c(j + 1) = "*" Then

jg = jg + Val(b(j + 1)) * Val(b(j + 2))

End If

'如果有減或者除法,可以再加判斷處理

Next

Debug.Print cs(10) & "最終結果為:=" & jg

End Sub

  • 上一篇:誰有(植物大戰僵屍 3),有的話,請發給我,5569672@qq.com。或者留下網址
  • 下一篇:新華互聯網學校有什麽專業?
  • copyright 2024編程學習大全網