在字符串中查找类似的术语

时间:2014-08-09 16:48:32

标签: c# .net

我打算用工作标题创建一个免费软件 " RaMoRD" - 重命名和镜像或删除重复文件。 顾名思义它应该能够将文件夹/文件从一个文件夹镜像到另一个文件夹,并在源/目标文件夹之间跳过或重命名具有不同文件名的重复文件。 另一个不同的功能应该是在特定文件夹及其子文件夹中查找所有重复项(具有不同的文件名),并提供删除或删除等选项,但创建与剩余文件的相对链接。 另一个不同的功能应该是"优化"文件夹由文件夹和子文件夹中的可配置规则组成。 我目前正在定义要求和可能的项目风险。

现在的问题是关于重命名功能: 可以说我有一个带音乐视频的文件夹。有文件: [GroupX] Rammstein - Sonne [720p] .avi 和 Sonne%20Ramstein%20 [480p](现场).mp4

该软件应该能够将文件名自动处理为: Rammstein - Sonne [GorupX] [720p] .avi和 Rammstein - Sonne(现场)[480p] .mp4

规则可能是这样的: - 找到" _"替换为" " - 找到"%20"替换为" " - 找到"。"替换为" "排除扩展名 - 找到所有"()"全部移动到最后 - 找到所有" []"全部移动到最后 - 找到" * - "如果找到,则在前3个字节中删除 - 删除多个" "连续 - 找到" "在第一个字节或最后一个字节中删除(如果找到)

- 检查类似术语忽略()或[]中的术语。如果找到相同或相似的术语,请选择" TermA" " AddSomethingInBetween"选择" TermB"

现在真的是问题: - 我如何识别像" Rammstein"和" Ramstein"在c#中类似?我可以想到自己创建一个算法,但可能有一个更好,更快的标准解决方案,我不知道。

1 个答案:

答案 0 :(得分:0)

您可以尝试实施基于Levenshtein距离的搜索,如此处所述[{3}}

你可以很好地调整它,以确定Rammstein和Ramstein和Rammsten是类似的字符串。