假设我有一个设置为图像路径的变量。 设img =“C:\ Users \ Example \ Desktop \ Test \ Stuff \ Icons \ test.jpg”
我想使用Vb6在“\ Icons”之前切片。所以切片后,它只是“\ Icons \ test.jpg”。
我试过在VB6中摆弄Mid $函数,但我没有取得多大成功。我知道Substring不是vb6中可用的函数,而只是在vb.net中。
答案 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