[算表] (分享)解析路徑用的小fn

看板Office作者 (luckid)時間7年前 (2018/09/30 23:41), 編輯推噓0(001)
留言1則, 1人參與, 7年前最新討論串1/1
各位前輩好, 小的有用正則表達式(regEx)做了一個簡單的路徑分析小function, 頗為簡陋,僅供參考,期能起拋磚引玉之效. 小弟真心覺得regEx在解析字串時很好用, 而且在多數情況下,同樣的regEx規則可通用於其他語言, 雖然無法通用於德語或法語等語言(好笑嗎), 但感覺cp值頗高,值得花時間學習. fn有不對的地方請各位前輩不吝指正,感謝 fn說明: 解析路徑用的function path是檔案路徑,例如 "d:\myFolder\subfolder\folder3\abcde.txt" parseType表示要解析的部分,預設為2 可給的值如下: 1:路徑不含檔名 2:檔名含副檔名 3:檔名不含副檔名 4:副檔名 Function parsePath(path, Optional parseType) If IsMissing(parseType) Or Not WorksheetFunction.IsNumber(parseType) _ Then parseType = 2 Dim RegEx As Object Set RegEx = CreateObject("VBScript.RegExp") RegEx.pattern = "([\s\S]+\\+)((\w+)(\.+\w+))" patternToReplace = "$" + CStr(parseType) path = RegEx.replace(path, patternToReplace) parsePath = path End Function 使用方式如下: Sub test() Dim str As String str = "D:\workSpace\excel\import.xlsm" str = parsePath(str, 2) MsgBox str End Sub 注意事項: 使用此fn前需按alt+F11開啟VBE後, 在工具>設定引用項目 勾選 Microsoft VBScript Regular Expressions 5.5 --- 小的有在fb成立一個vba討論社團, 有興趣的朋友可以參考看看, 也很歡迎板友加入並給予指導,感謝: https://www.facebook.com/groups/804156859723363/ -- https://www.youtube.com/watch?v=B_CMmbFexbM
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.227.122.6 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1538322080.A.A07.html

10/06 21:41, 7年前 , 1F
規則應改為"([\s\S]+\\+)(([\s\S]+)(\.+\w+))"
10/06 21:41, 1F
文章代碼(AID): #1RiEwWe7 (Office)
文章代碼(AID): #1RiEwWe7 (Office)