在vb中怎么把输入的字符串转换为算式?

2025-03-12 22:15:42
推荐回答(5个)
回答1:

直接利用VB6提供的 Script Control 控件来做就行了,很简单又支持特别多的功能。如你所述要计算2*4,只需用此控件的eval方法,如 Ans=Script1.Eval("2*4") 就行了。当然用文本控件作为输入如:Ans=Script1.Eval(Text1.text) 。此控件支持复杂的数学运算式,同时也支持VB其它的属性、方法等的调用。

回答2:

一个个来转换啊
给你几个函数就可以做到了
1、函数Left(string, length)
返回字符串(string)中从左边算起指定数量(length)的字符。

2、函数Right(string,length)
返回字符串(string)中从右边算起指定数量(length)的字符。

3、函数Mid(string, start[, length])
返回字符串(String)中从左边指定位(start)算起指定数量(length)的字符。

4、函数Len(string | varname)
返回字符串string内字符的数目,或是存储一变量varname所需的字节数。

5、函数Asc(string)
返回代表字符串string中首字母的字符代码。

6、函数Chr(charcode)
返回与指定的字符代码charcode相关的字符。

+ ASCII码:43
- ASCII码:45
* ASCII码:42
/ ASCII码:47

回答3:

这个……怕你不懂,算了,反正我说了:

将中缀表达式转换成后缀表达式,然后入堆栈。用出堆栈的算法,加上case分支,进行运算,直到栈为空,返回结果。

请参考《数据结构》中相关内容:堆栈,字符串章节。

回答4:

VB中已经提供了相应的函数。
a=eval(Astr)
b=eval(Bstr)
即可,a和b变量即表达式的值。
除了运算算式值之外,还可以运算逻辑值。
如c=eval("1>3"),c的值为False

回答5:

似乎VB6中没有这个函数,这里有个折中的方法,不过比较方便,方法如下:

新建一个模块,写入:
Public Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long

Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Long
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, fCheckOnly)
End Function

Public Function calc(ByVal x As String) As String
Dim result As String
Clipboard.Clear
ExecuteLine "dim x as double"
If ExecuteLine("x= " & x, True) = 0 Then
ExecuteLine "x= " & x
ExecuteLine "clipboard.settext x"
result = Clipboard.GetText
End If
calc = result
End Function

然后在窗口中:
Private Sub Command1_Click()
Text1.Text = calc(Text1.Text)
End Sub

原理是调用VB自己的代码解释器得到运算结果。可能代码的理解上比较困难一些^_^,如果编一个计算字符串的函数应该更好一些,当然代码会很长,我自己编的要220多行,我也看过500多行的。