例如:1in2out*5+2in6out*6        (只有字符"in" "out" "*" "+"4种)要求:读取全部in前面的数字并得出总数   和   全部out前面的数字并得出总数
      *5则表示循环1in2out5次 同理*6则表示循环2in6out6次
结果:in   应该=1*5+2*6   总数=17
     out   应该=2*5+6*6   总数=46
提示:1in2out*5这种循环可以有很多

解决方案 »

  1.   

    这有何难,请看dim STR as string,S as string
    dim NewStr as string 
    dim Count as integer ‘存放循环次数
    dim In as long,Out as long ‘存放In、Out前面出现的数字之和 STR="1in2out*5+2in6out*6"NewStr=STRdo while true
       if InStr(NewStr,"+")=0 exit do
       S=left(NewStr,InStr(STR,"+")-1)
       NewStr=mid(NewStr,len(S)+1,len(NewStr)-len(S))     
       Count=val(mid(S,InStr(S,"*")+1,len(S)-InStr(S,"*"))) 
       In=In+Count*val(left(S,InStr(S,"in")-1))
       mid(S,1,InStr(S,"in")+1)=space(InStr(S,"in")+1)
       Out=out+Count*val(left(S,InStr(S,"out")-1))
    loopdebug.print "In="& str(In) "  out=" & str(Out)
      

  2.   

    哦,上面少了一个东西。if InStr(NewStr,"+")=0 exit do改为: if InStr(NewStr,"+")=0  then exit do  
      

  3.   

    Dim s As String, arr() As String
    Dim Sin As Long, Sout As Long, mul As Long, i As Integer
    s = "1in2out*5+2in6out*6+4in2out*6"
    arr = Split(s, "+")
    For i = 0 To UBound(arr)
        mul = Val(Mid(arr(i), InStrRev(arr(i), "*") + 1))
        Sin = Sin + mul * Val(arr(i))
        Sout = Sout + mul * Val(Mid(arr(i), InStr(arr(i), "in") + 2))
    Next i
    Debug.Print Sin, Sout