对于一个已有的字符串s="123@a-33@3-4-5@66"
可以定义数组dim ss() as string利用ss=split(s,"@")把它提取成
123  a-33  3-4-5  66 这几个字符串.放到了字符串数组ss里.但我实际想实现的是:把a-33也分为a和33既:
把123 a 33 3-4-5 66放在字符串数组ss里.请问可以实现吗?如何实现?谢谢高手

解决方案 »

  1.   

    大家有碰到过要想取一字符串里的某些值而无从下手?有没有觉得看书或教材对split的写法糊里糊涂……如果有此疑问的话,请看下面我对例子的解释,相信您会对这个有一定的了解。   我先介绍一下Split函数的用法:
     返回值数组 = Split("字符串","分割符")
      假设变量strURL保存着URL值,如strURL = "ftp://username:password@server",这是我们在IE中登录到FTP上时的URL形式,如果我们想把其中的username和password取出来的话,该怎么办呢?当然解决的方法有许多,在这里我们只介绍用Split来解决的方法。首先,我们找出分割符。我们发现在这个字符串中,username和password之间有个冒号把它们隔开了,所以我们就把这个冒号作为Split函数的"分割符"来分割整个字符串,最后达到取username和password的目的。代码如下: 
    strURL = "ftp://username:password@server"
    aryReturn = Split(strURL,":")  这样我们就把字符串用冒号分割开了,分割后的结果保存在aryReturn中(aryReturn是一个数组)。   下面我们就来看看这个最终的结果吧,因为Split函数最终返回的是一个数组,所以我们主要就是显示数组中的元素了,就要涉及到一些跟数组有关的函数:IsArray()判断是否数组的函数,LBound()取数组的下标,UBound()取数组的上标。 Response.Write("返回值是否为数组:" & IsArray(aryReturn) & "<br>")
    For i = LBound(aryReturn) To UBound(aryReturn)
        Response.Write("返回值数组中的元素[" & i & "]:" & Right(aryReturn(i),Len(aryReturn(i))-2) & "<br>")
    Next 
      通过上面的代码,我们看到字符串被分割成三个部分,即:"ftp"、"//username"、"password@server"。我们要取username和password需要进一步的处理,我就不多说了,直接给出代码。
      取username的代码:
    strUsername = Right(aryReturn(1),Len(aryReturn(1))-2) 
      取password的代码:'取password我们又用到Split函数了,不过这回的分割符是"@" 
    aryTemp = Split(aryReturn(2),"@") 
    strPassword = aryTemp(0) 
    '我们可以顺便取出server
    strServer = aryTemp(1) 
      分割符可以是一个字符,也可以是一个字符串。如:
    aryReturn = Split("ftp://username:password@server,"//") 
      

  2.   

    3-4-5 不需要拆分,主要难度就在这.
    首先所有元素通过"@"拆分
    然后,第二个元素,用"-"拆分.
    放到一个数组里.也就是说s="123@a-33@3-4-5@66"
    最终拆分成 123 a 33 3-4-5 66 分别放在一个数组里.以上这些可以用一个韩数自动完成吗?
      

  3.   

    Option Explicit'Powered by Jadeluo, 2005/05/24Private Sub Form_Load()
        Dim s As String
        Dim ss() As String
        Dim i As Integer
        s = "123@a-33@3-4-5@66"
        ss = Split(Replace(s, "-", "@", , 1), "@")
        For i = LBound(ss) To UBound(ss)
            Debug.Print ss(i); " ";
        Next i
        Debug.Print
        End
    End Sub算法很简单, 用Replace函数将s字符串中的第一个"-"替换成"@", 然后用Split函数进行拆分。
      

  4.   

    回复人: jadeluo(秀峰)  
    Good idea 
    Give you 20 !