我有多個文件路徑,它們不完全相同,但是在某個點進一步深入路徑之前,它們都包含一個帶有對象名稱的文件夾。關鍵並不總是一致的,名字也不一定。但是,對於相同的對象,對象名稱將在多個路徑中保持一致。例如:C#:查找分組文件路徑中的對象名稱?
- C:\ ABC \ I33 \ p4l \ object1 \ SO1 \ mko0 \等等\ FILENAME.EXT
- C:\ ABC \ I33 \ p4l \ object1 \ SO1 \ jiop1 \梅\文件名.EXT
- C:\ ABC \ I33 \ p4l \ object1 \ SO1 \ JUM \ -99 \ FILENAME.EXT
在上面的例子中,我尋找的名字是 'object1'。但是,在下一個示例中,我正在尋找'pkwm34'。
- C:\ ertgh \ xcvh \ bfrth32456 \ pkwm34 \ werg \ ASDC \ DDF \ FILENAME.EXT
- C:\ ertgh \ xcvh \ bfrth32456 \ abc_pkwm34_jj5 \ werg \ ASDC \ DDF \ FILENAME.EXT
- C:\ ertgh \ xcvh \ bfrth32456 \ abc_pkwm34_abc_abc_jj5 \ werg \ ASDC \ DDF \ FILENAME.EXT
- C:\ ertgh \ xcvh \ bfrth32456 \ abc_pkwm34_abc_abc_jj5 \ werg \ ASDC \ ddf4 \ FILENAME.EXT
- C: \ ertgh \ xcvh \ bfrth32456 \ abc_pkwm34_abc_abc_jj5 \ werg \ asdc \ ddf4 \ filename.ext
- C:\ ertgh \ xcvh \ bfrth32456 \ abc_pkwm34_abc_ab c_jj5 \ ji2345op1 \ sdfg \ FILENAME.EXT
- C:\ ertgh \ xcvh \ bfrth32456 \ abc_pkwm34_abc_abc_jj5 \ juxcm \ isdf99 \ FILENAME.EXT
我完全不知道應該如何處理這個問題,因爲KMP算法仍需要完整的字符串,加上一個模式來搜索。所以基本上就是我分析它的方式,我不得不找到所有可以使用string.Split分解的確切模式匹配,但是在真實世界的場景中,我最終會在'\'和' _',然後以50多種模式結束搜索。這是一項艱鉅的任務,現在我想在這方面提供一些幫助。另一個可能出現的問題,或者某人可能會問的事實是,沒有一種模式會成爲可識別的語言。另外,由於工作限制,我無法訪問這種情況下的外部工具。
編輯
爲了幫助所有來回答這個問題,我會在這是有益的意見張貼問題的答案,這樣就可以在這個崗位的底部快速找到它們。
- 文件夾名稱分隔符並不總是下劃線,它也可以是空格。
- 文件夾名稱不在層次結構的一致級別,它可以是從第二級到最後一級的任何地方。
- 最快的實現並非必要,可以使用蠻力算法。
感謝, 傑米
但它總是在目錄hyrarchy的4級?或者它也可以是'C:\ abc \ i33 \ p4l \ FOO \ object1 \ mko0 \ blah \ filename.ext'? (foo現在在第4級,第1個在第5個)。下劃線是否始終是文件夾名稱的分隔符? –
不,是的,不確定你的意思。在過去的幾周裏,我一直在尋找一致性,除了對象名以外沒有任何其他的東西。它可以是第二,第三,一直到層級中的第九級。至於分隔符,我看到空格,下劃線和破折號,儘管破折號看起來是另一個命名約定的一部分。 – lxxtacoxxl
快速簡單不是必需的,它可以在啓動時在後臺運行,而其他組件正在加載,這不是問題。 – lxxtacoxxl