Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo escribir VB para calcular fórmulas que contienen caracteres o letras chinos y tienen corchetes (con texto o números entre corchetes)?

¿Cómo escribir VB para calcular fórmulas que contienen caracteres o letras chinos y tienen corchetes (con texto o números entre corchetes)?

Puede simplificar la fórmula procesando primero varios caracteres y luego la expresión.

Subcomando privado1_Click()

Atenuar t como cadena, cs(10) como cadena, b() como cadena, c() como cadena, jg como único

' Encuentra el resultado 16.08 obtenido calculando este tipo de fórmula: 1m*2m+3m*2m[2 ejes derecho]+[3 ejes izquierdo]5.2㎡+viga 1.2m*2.4m

t = "1m*2m+3m*2m[2 ejes derecho]+[3 ejes izquierdo]5,2㎡+viga 1,2m*2,4m"

cs(10) = t

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

cs(1) = 0

cs(3) = """

'Eliminar el contenido del corchete del medio

For j = 1 To Len(t)

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

Si cs(2) = "[" Entonces

cs(1) = 1

De lo contrario, si cs(2) = "]"Entonces

cs (1) = 0

Fin si

Si cs(1) = 0 Entonces

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

Finalizar si

Siguiente

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

' Depurar. Imprimir t

'Eliminar caracteres redundantes, como chino y unidades

cs(4) = ""

For j = 1 To Len(t )

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

Si InStr(cs(0), cs(2)) > p>cs (4) = cs(4) & cs(2)

Finalizar si

Siguiente

t = cs(4)

Debug.Print t

'Dividir números y operadores

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

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

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

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

b() = Dividir(cs(5), ","") 'Dividir los números y guardado en la matriz b()'

cs(6) = ""

Para j = 1 a Len(t)

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

Si InStr("+-*/", cs( 2)) > 0 entonces

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

Finalizar si

Siguiente

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

c() = Split(cs(6), ","") 'El operador de división se almacena en la matriz c()

'Según el operador, se realiza la fórmula< / p>

jg = 0

Para j = 0 A UBound(c()) - 1

Si

c(j) = "+" Y c(j + 1) = "+" Entonces

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

Finalizar si

Si c(j) = "+" y c(j + 1) = "*" Entonces

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

End If

'Puedes agregar más procesamiento de juicio si hay una resta o división.

Siguiente paso

Debug.Print cs(10) & "El resultado final es: =" & jg

End Sub