请问字符串“asdfgdas     fadsad”中如何将“asdfgdas”和“fadsad”两个字符串分离出来,分别储存呢?(在整个字符串中,这两个字符串中间是以空格连接的)。
如果是“asdfgdas,fadsad”的话,可以用Split函数去掉“,”来分离,可是空格如何处理呢?
请高人指点!

解决方案 »

  1.   

    Function SplitX(ByVal Expression As String, Optional ByVal Delimiter = " ") As String()
        Dim aResult() As String, aTemp() As String
        Dim i As Long, j As Long
        
        aTemp = Split(Expression, Delimiter)
        ReDim aResult(UBound(aTemp))
        
        i = -1
        For j = 0 To UBound(aTemp)
            If LenB(aTemp(j)) <> 0 Then
                i = i + 1
                aResult(i) = aTemp(j)
            End If
        Next
        
        ReDim Preserve aResult(i)
        SplitX = aResult
    End Function
      

  2.   

    '*************** 方法一
    Dim aa$, a1$, a2$, s
    Private Sub Command1_Click()
       aa = "asdfgdas     fadsad"
       Do
          aa = Replace(aa, Space(2), Space(1))
       Loop Until InStr(aa, Space(2)) = 0
       s = Split(aa, " ")
       a1 = s(0)
       a2 = s(1)
    End Sub
    '****************方法二
    Dim aa$, a1$, a2$, s
    Private Sub Command1_Click()
       aa = "asdfgdas     fadsad"
       s = Split(aa, " ")
       a1 = s(0)
       a2 = s(UBound(s))
    End Sub
      

  3.   

    '我的方法
    Option ExplicitPrivate Sub Form_Load()
        Dim a As String
        Dim b() As String
        
        a = "asdfgdas     fadsad"
        b = Split(a, " ")
        
        Dim i As Integer
        Dim t As String, s As String
        
        For i = LBound(b) To UBound(b)
            If Not Trim(b(i)) = vbNullString Then t = t & vbCrLf & Trim(b(i))
            s = s & vbCrLf & b(i)
        Next
        MsgBox t & vbCrLf & s
    End Sub
      

  4.   

    如果不考虑效率的话,做多次循环,每次都将2个空格折成1个空格a = "    asdas                        asd            "
    Do
        If InStr(1, a, "  ") = 0 Then Exit Do
        a = Replace(a, "  ", " ")
    Loop
    For Each x In Split(Trim(a), " ")
        Debug.Print x
    Next