(VB6)在某个点之前切片

时间:2014-02-11 15:44:45

标签: vb6 substring slice

假设我有一个设置为图像路径的变量。 设img =“C:\ Users \ Example \ Desktop \ Test \ Stuff \ Icons \ test.jpg”

我想使用Vb6在“\ Icons”之前切片。所以切片后,它只是“\ Icons \ test.jpg”。

我试过在VB6中摆弄Mid $函数,但我没有取得多大成功。我知道Substring不是vb6中可用的函数,而只是在vb.net中。

2 个答案:

答案 0 :(得分:4)

在第一个\ icons之后

path = "C:\Users\Example\Desktop\Test\Stuff\Icons\test.jpg"

?mid$(path, instr(1, path, "\icons\", vbTextCompare))

>  \Icons\test.jpg

或者在最后一次之后应该有> 1

path = "C:\Users\Example\Desktop\Test\Icons\Stuff\Icons\test.jpg"

?right$(path, len(path) - InStrRev(path, "\icons\", -1, vbTextCompare) + 1)

>  \Icons\test.jpg

答案 1 :(得分:3)

使用Split函数通常很容易做到这一点。我写了一个方法来演示它的用法,对于grins,它需要一个可选参数来指定你想要返回多少个目录。传递没有数字会返回文件名,传递一个非常高的数字会返回一个完整路径(本地或UNC)。请注意,方法中没有错误处理。

Private Function GetFileAndBasePath(ByVal vPath As String, Optional ByVal baseFolderLevel = 0) As String
    Dim strPathParts() As String
    Dim strReturn As String
    Dim i As Integer

    strPathParts = Split(vPath, "\")
    Do While i <= baseFolderLevel And i <= UBound(strPathParts)
        If i > 0 Then
            strReturn = strPathParts(UBound(strPathParts) - i) & "\" & strReturn
        Else
            strReturn = strPathParts(UBound(strPathParts))
        End If
        i = i + 1
    Loop

    GetFileAndBasePath = strReturn

End Function