我正在创建一个关于电视剧的软件。我需要从剧集的文件名(字符串)中获取“剧集编号”。
文件名示例: “剧集2x04的标题” “我是另一个头衔S05E22” “惊人的电视系列22x2”
我考虑过从剧集部分拆分标题部分,但文件名的格式每次都不一样(例如.nxmm,SnnEmm,nnxm)。
这是我的简单代码:
foreach (string filename in path) {
if (filename.Contains(*season n episode m*)) {
// do something
}
}
答案 0 :(得分:3)
你应该使用正则表达式:
var list = new List<string>();
list.Add("Lost 04x01");
list.Add("Lost 04x02");
list.Add("Lost 4x3");
list.Add("Lost 4x04");
list.Add("Lost S04E05");
list.Add("Lost S04E6");
Regex regex = new Regex(@"S?\d{1,2}[X|E]?\d{1,2}", RegexOptions.IgnoreCase);
foreach (string file in list) {
if (regex.IsMatch(file))
{
// true
}
}
答案 1 :(得分:1)
这是代码
string one = "04x22";
string two = "s04e22";
if ((one.Split('x')).Count == 1)
{
string[] res = (one.Split('e'));
// result is res[1]
}
else
{
string[] res = (one.Split('x'));
// result is res[1]
}
答案 2 :(得分:1)
使用正则表达式:
var regex = new Regex(@"(?<season>\d+)[Ex](?<episode>\d+)");
foreach (string file in path) {
var match = regex.Match(file);
if (match.Success) {
Console.WriteLine(match.Groups["season"].Value);
Console.WriteLine(match.Groups["episode"].Value);
}
}
这个将匹配04x22,4x22,S04E22等。您应该能够根据需要定制它或多或少的限制。
答案 3 :(得分:0)
您需要使用正则表达式从文件名中查找季节和剧集编号。
像(\d?\d)[xE](\d\d)
这样的东西。第一组是季节编号,第二组是剧集编号。请参阅regex fiddle有关正则表达式和演示的说明。
您需要在代码中使用Regex.Match()
方法,而不是Contains()
。