Substring 检查多个不同字符串是否为第二个字符串的子字符串的最快方法

Substring 检查多个不同字符串是否为第二个字符串的子字符串的最快方法,substring,match,Substring,Match,背景: 我正在创建一个程序,该程序将对我的媒体文件进行排序和重命名,这些文件的名称为:例如:The.Office.s04e03.DIVX.WaREZKiNG.avi,并将其放入一个有组织的文件夹结构中,该文件夹由每个电视剧的文件夹列表组成,每个文件夹都有一个四季文件夹列表,这些文件夹将包含媒体文件 问题是: 我不确定读取文件名并确定该文件名的哪一部分是电视节目的最佳方法。例如,在.Office.s04e03.DIVX.WaREZKiNG.avi中,Office是系列的名称。我决定列出所有电视节目

背景: 我正在创建一个程序,该程序将对我的媒体文件进行排序和重命名,这些文件的名称为:例如:The.Office.s04e03.DIVX.WaREZKiNG.avi,并将其放入一个有组织的文件夹结构中,该文件夹由每个电视剧的文件夹列表组成,每个文件夹都有一个四季文件夹列表,这些文件夹将包含媒体文件

问题是: 我不确定读取文件名并确定该文件名的哪一部分是电视节目的最佳方法。例如,在.Office.s04e03.DIVX.WaREZKiNG.avi中,Office是系列的名称。我决定列出所有电视节目,并检查每个电视节目是否是文件名中的子字符串,但据我所知,这意味着我必须对照每个文件的名称检查每个电视节目

我的问题:如何确定一个字符串是否包含许多其他字符串中的一个


感谢

Aho-Corsasick算法[1]有效地解决了这个可能的长字符串是否包含这些短字符串中的任何一个的问题

然而,我怀疑这并不是你想要解决的问题。在我看来,您似乎希望从可能有多种不同格式的字符串中提取可能的组件。我怀疑,为可能的提供商、视频格式、季节/插曲标记、可能的节目名称数据库等提供一些不同的regexp,这才是您真正想要的。然后,您可以在文件名上独立运行这些不同的“信息提取器”,以提取它们的结构


[1]

这通常取决于文件名的总体结构,例如,序列名是否总是排在第一位?如果是这样的话,树结构就可以很好地工作。在您的示例中,单词之间是否有一个标准的句号标记,这样您就可以拆分这些单词上的字符串,并创建一个不区分大小写的感兴趣单词哈希表来提高性能

然而,提取季节和情节变得更加困难,一个简单的解决方案是实现一个算法来处理您发现的每种格式,尽管通过使用提示,您也可以创建一个有趣的解析器。不过,这可能有点过头了