我有一个相当复杂的方法,我需要实现相关的两套比较字符串的。所以请耐心等待,因为我试图用尽可能简单的方式来描述它。实现一个复杂的方法,当一个组与第三
我给代表的文件名字符串的一组A - 让我们说“ABC”,“DEF”和“GHI”。我必须从这些名称中为每个名称派生出一组“关联”的文件名称 - 让我们假设“abc”为“abc_123”,“abc_456”和“abc_789”; “def”的“def_123”,“def_456”和“def_789”;和“ghi”的“ghi_123”,“ghi_456”和“ghi_789”。我能做到这一点。但是,这些关联的文件名可能带有前缀或后缀,这些前缀或后缀是不可预知的字符串 - 因此“abc”的相关文件名实际上可能是“HELLOabc_123WORLD”,“FOOabc_456BAR”和“999abc_789000”。 (就正则表达式而言,这只是在我上面写的关联文件名的两侧加上*的问题)。简而言之,相关的文件名将如下所示:
*<original filename><other piece that I know>*
其中星号表示任意数量的随机字符(可能为0)。
这是难题的第一部分。
接着,我考虑到我要比较的所述一组相关联的文件名(组B)的字符串的另一集合C。 (如果你想知道,我试图检查关联的文件是否在某个目录中,并且我有该目录中的文件名列表,设置C)。如果我发现集合C中某个文件的所有关联文件名,我可以继续检查集A中的文件。我必须检查集A中的每个文件名,并且如果集B中的所有关联文件名都是在集合C中发现,我可以从集合A
最后检查过该文件,我必须从没有打勾(所以我会回到什么,如果一切都被发现)设置返回的文件名。
我一直在努力想出一种方法来实现此方法。我想创建一个地图,将来自集A的文件名映射到包含与文件名,像这样有关的所有文件名列表的:
Key Value
abc *abc_123*, *abc_456*, *abc_789*
def *def_123*, *def_456*, *def_789*
ghi *ghi_123*, *ghi_456*, *ghi_789*
然后我可以遍历这个地图的元素,和的值元素,将它们与集合C中的字符串进行比较。如果在集合C中找到给定键的值(列表)的所有元素,我可以将该键标记在我的列表中。任何剩余的密钥将被退回。
这在我看来,像它应该工作,但撇开这为代码的实际机制一直对我来说非常具有挑战性的。所以,如果你能给我任何小小的建议或指引,让我的想法朝着正确的方向发展,我会非常感激。如果您想提供代码,我的实现语言将是Java。伪代码也是受欢迎的。