我有多个文件路径,它们不完全相同,但是在某个点进一步深入路径之前,它们都包含一个带有对象名称的文件夹。关键并不总是一致的,名字也不一定。但是,对于相同的对象,对象名称将在多个路径中保持一致。例如: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