怎么在vb6.0内把一个由运算式组成的字符串转换为运算式?
答案:3 悬赏:50
解决时间 2021-01-30 15:09
- 提问者网友:恋你成殇
- 2021-01-30 05:11
比如“1+1”转化为1+1或者直接输出2
最佳答案
- 二级知识专家网友:强势废物
- 2021-01-30 06:22
Function Eval(ByVal Expressions As String) As String '文本运算vbs
Dim Mssc As Object
Set Mssc = CreateObject("MSScriptControl.ScriptControl")
Mssc.Language = "vbscript"
On Error GoTo EvalErr
Eval = Mssc.Eval(Expressions)
Exit Function
EvalErr:
Exit Function
End Function‘调用:例如:Eval(Text1)
Dim Mssc As Object
Set Mssc = CreateObject("MSScriptControl.ScriptControl")
Mssc.Language = "vbscript"
On Error GoTo EvalErr
Eval = Mssc.Eval(Expressions)
Exit Function
EvalErr:
Exit Function
End Function‘调用:例如:Eval(Text1)
全部回答
- 1楼网友:野心和家
- 2021-01-30 08:45
添加一个模块 加入下面的代码 (这是我自己写的自定义函数) 保存模块
'by 麦兜terran & sky
public enum stringl
计算字符串长度 = 0
查找字符串 = 1
计算字符串出现次数 = 2
end enum
public function sl(x, optional z as string, optional y as stringl = 0)
select case y
case 计算字符串长度
for j = 1 to ubound(split(x, vbcrlf))
for i = 1 to len(split(x, vbcrlf)(j))
sl = i
next
next
case 查找字符串
for i = 1 to len(x)
if mid(x, i, len(z)) = z then j = 1: exit for else j = 0
next
sl = j
case 计算字符串出现次数
for i = 1 to len(x)
if mid(x, i, len(z)) = z then j = j + 1
next
sl = j
end select
if x = "" then sl = 0
end function
------------
现在你可以调用sl(文本,字符,类型)
比如
private sub form_click()
print sl(text1.text, "abc", 2)
end sub
计算abc出现的次数
当然你也可以直接写 sl(text1.text)得出text1的字符串长度类型默认为0
如果想查找字符串可以将类型写为1
private sub form_click()
if sl(text1.text,"abc",1) = 1 then print "有abc" else print "没有abc"
end sub
如果有该字符串返回1如果没有则返回0
你可以判断1和0来判断有没有"abc"
- 2楼网友:野心和家
- 2021-01-30 07:23
方法一:API函数
这是VBS的函数
方法二:自己写函数
Private Function Eval(ByVal String As String, Optional KH As Long) As Double
'KH你不用理他,是堆栈参数,自己调用
Dim i As Long,j As Long,k as long, l as Long,m as Long,n as Long, o As Long
If Ismissing(KH) Then '以下为找括号,j为第几个括号内,k为最大括号数
For i = 1 to Len(String)
Select Case Mid(String,i,1)
Case "("
j=j+1
case ")"
j=j-1
end select
if j<0 then '当前右括号大于左括号
exit function
elseif j>k then
k=j
end if
next i
if k<>0 then exit function '左右括号数量不等
Eval=Eval(String,k) '调用自身
exit function
end if
For i = 1 to Len(String) '开始计算,找到最里层括号
select Case Mid(String,i,1)
case "("
j=j+1
case ")"
j=j-1
end select
If j=KH Then '最里层括号
For k = i+1 To Len(String) '找对应括号
If Mid(String,k,1)=")" then '找到最里层括号
l=k 'l为最里层右括号
exit for
end if
next i
End If
For m = j + 1 To l - 1 '幂运算^
if mid(String,m,1) = "^" Then
for n = m-1 to j+1
if not isnumeric(n) then exit for
Next n
o=n
'……………………………………………………剩下的我还写不出来,等我几天
end function方法三:看蚂蚁的回答
方法四:自己引用
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |