VB中有没有类似VC中CString类的Format("%s",...)函数?或类似C/C++的sprintf(..."%s",...)函数?

解决方案 »

  1.   

    VB中没有,你可以用REPLACE函数替换!!
      

  2.   

    '//格式化字符串
    Public Function SprintF(ByVal vString As String, ParamArray vPara() As Variant) As String
        Dim nCurrentFlag As Integer
        Dim nPos As Integer
        Dim nCurPos As Integer
        Dim nMaxArg As Integer
        Dim nArgCount As Integer
        Dim nLenFlags As Integer
        Dim nWork As String
        
        nMaxArg = UBound(vPara()) + 1
        nLenFlags = Len(vString)
        
        nCurrentFlag = 1
        nArgCount = 0
        nPos = InStr(nCurrentFlag, vString, "%")
        
        Do While (nPos > 0)
            If Mid$(vString, nPos + 1, 1) <> "%" Then
                nArgCount = nArgCount + 1
                nCurrentFlag = nPos + 1
            Else
                nCurrentFlag = nPos + 2
            End If
            nPos = InStr(nCurrentFlag, vString, "%")
        Loop    If nArgCount <> nMaxArg Then Err.Raise 450, , "Mismatch of parameters for string " & vString & ". Expected " & _
            nArgCount & "but received " & nMaxArg & "."    nCurrentFlag = 1
        nCurPos = 1
        nArgCount = 0
        nWork = ""
        nPos = InStr(nCurrentFlag, vString, "%")    Do While (nPos > 0)
            If Mid$(vString, nPos + 1, 1) <> "%" Then
                nWork = nWork & Mid$(vString, nCurrentFlag, nPos - nCurrentFlag) & vPara(nArgCount)
                nCurrentFlag = nPos + 2
                nArgCount = nArgCount + 1
            Else
                nWork = nWork & Mid$(vString, nCurrentFlag, nPos - nCurrentFlag + 1)
                nCurrentFlag = nPos + 2
            End If
            nPos = InStr(nCurrentFlag, vString, "%")
        Loop
        
        If nCurrentFlag <= nLenFlags Then nWork = nWork & Mid$(vString, nCurrentFlag, nLenFlags - nCurrentFlag + 1)
        SprintF = nWork
    End Function