我有文件路径,例如:
' Any number of folders before and after the Project name
C:\a\b\c\d\Project1\e\f\g\somefile.someextension'
我将如何:
仅提取项目名称前的路径?
C:\a\b\c\d\
在项目名称后提取路径?
\e\f\g\somefile.someextension
注意:当然是给出了文件名。
Split
会更好还是更复杂regex?
答案 0 :(得分:2)
使用InStr
Sub ParsMe()
Dim strTest As String
Dim strnown As String
Dim arrStr() As String
Dim strOut As String
Dim lngFirst As Long
Dim lngStart As Long
Dim lngEnd As Long
strTest = "C:\a\b\c\d\Project1\e\f\g\somefile.someextension"
strKnown = "Project"
lngFirst = InStr(strTest, strKnown)
If lngFirst > 0 Then
lngEnd = InStr(lngFirst, strTest, "\")
lngStart = InStrRev(strTest, "\", lngFirst)
MsgBox "Start path:= " & Left$(strTest, lngStart) & vbNewLine & "End path:=" & Right$(strTest, Len(strTest) - lngEnd + 1), vbInformation, "Found:= " & Mid$(strTest, lngStart + 1, lngEnd - lngStart - 1)
Else
MsgBox strKnown & " not found in " & strTest
End If
End Sub
对于简单拆分使用Split
,正则表达式不会在此处添加任何其他值。像tis这样的东西
Option Base 0
Sub ParseMe()
Dim strTest As String
Dim strKnown As String
Dim arrStr() As String
strTest = "C:\a\b\c\d\Project1\e\f\g\somefile.someextension"
strKnown = "Project1"
arrStr = Split(strTest, strKnown)
If UBound(arrStr) = 0 Then
MsgBox strKnown & " not found", vbCritical
Else
MsgBox "path before is " & arrStr(0) & vbNewLine & "path after is " & arrStr(1)
End If
End Sub