对于给定字符串进行分割,结果按照新的格式显示。
给定字符串特征:用1、2、3、4分为4段;第一个字符总是1;每段长度不定,但均为字母。
如:
GivenStr = "1ASLDKJ2WNKD3ALJLKJ4IPHPA"
输出结果为:
IPHPA#ALJLKJ#WNKD#ASLDKJ#可是,将程序段封装为SUB过程,再调用时,却出现了问题。
输出结果变成了:
####请教各位,问题出在何处?
谢谢!附:VB6源代码Private Sub Form_Load()
Dim GivenStr, Str1, Str2, Str3, Str4 As String
'取值
GivenStr = "1ASLDKJ2WNKD3ALJLKJ4IPHPA"
'调用过程
Call StringSplit(GivenStr, Str4, Str3, Str2, Str1)
'显示结果
debug.print Str4 + "#" + Str3  + "#" + Str2  + "#" + Str1  + "#" + Chr(13) + Chr(10)End SubSub StringSplit(ByVal Str0 As String, ByVal Str4 As String, ByVal Str3 As String, ByVal Str2 As String, ByVal Str1 As String)
Dim MyStr As String
Dim mylen, mysplit As IntegerMyStr = Str0
mylen = Len(MyStr)
mysplit = InStr(MyStr, "4")
Str4 = Right(MyStr, mylen - mysplit)MyStr = Left(MyStr, mysplit - 1)
mylen = Len(MyStr)
mysplit = InStr(MyStr, "3")
Str3 = Right(MyStr, mylen - mysplit)MyStr = Left(MyStr, mysplit - 1)
mylen = Len(MyStr)
mysplit = InStr(MyStr, "2")
Str2 = Right(MyStr, mylen - mysplit)MyStr = Left(MyStr, mysplit - 1)
mylen = Len(MyStr)
Str1 = Right(MyStr, mylen - 1)End Sub
如果取消过程调用,直接验证这段代码,运行成功。(将过程中Str0改为GivenStr)

解决方案 »

  1.   

    Option ExplicitPrivate Sub Form_Load()
        Dim GivenStr As String, Str1 As String, Str2 As String, Str3 As String, Str4 As String
        '取值
        GivenStr = "1ASLDKJ2WNKD3ALJLKJ4IPHPA"
        '调用过程
        Call StringSplit(GivenStr, Str4, Str3, Str2, Str1)
        '显示结果
        Debug.Print Str4 + "#" + Str3 + "#" + Str2 + "#" + Str1 + "#" + Chr(13) + Chr(10)End SubSub StringSplit(ByVal Str0 As String, Str4 As String, Str3 As String, Str2 As String, Str1 As String)
        Dim MyStr As String
        Dim mylen As Long, mysplit As Long
        
        MyStr = Str0
        mylen = Len(MyStr)
        mysplit = InStr(MyStr, "4")
        Str4 = Right(MyStr, mylen - mysplit)
        
        MyStr = Left(MyStr, mysplit - 1)
        mylen = Len(MyStr)
        mysplit = InStr(MyStr, "3")
        Str3 = Right(MyStr, mylen - mysplit)
        
        MyStr = Left(MyStr, mysplit - 1)
        mylen = Len(MyStr)
        mysplit = InStr(MyStr, "2")
        Str2 = Right(MyStr, mylen - mysplit)
        
        MyStr = Left(MyStr, mysplit - 1)
        mylen = Len(MyStr)
        Str1 = Right(MyStr, mylen - 1)End Sub