You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用辅助类解析文本文件,获取电影最新版本条目

搞定!获取电影最新版本并筛选目标结果

嘿,我明白你的需求了——从给定的电影文本数据里,先找出每个电影的最新版本,再筛选出那些版本号最高的电影(也就是你要的DDLJ和the hero)。我来帮你补全并优化C#代码,一步步实现:

核心思路拆解

  1. 把文本拆成结构化数据:把杂乱的字符串拆成电影名、作者、版本号三个字段,方便后续处理。
  2. 按电影名分组找最新版本:同一个电影可能有多个版本,我们要每组里挑出版本号最大的那个。
  3. 筛选版本最高的电影:从所有电影的最新版本里,找出版本号登顶的那些电影。

完整可运行代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO; // 读取文件时需要引用这个命名空间

class MovieVersionHandler
{
    static void Main()
    {
        // 如果你是从文件读取数据,把下面这行换成 File.ReadAllText("你的文件路径")
        string rawData = "xxx, Author1, v6;the net, author1, v7;xxx, author3, v10;DDLJ, author3, v11;the fire, author5, v6;the health, author1, v8;the health, author7, v2;the hero, author9, v11;the hero, author8, v3";
        
        // 1. 拆分数据为单个条目,过滤无效数据
        var movieEntries = rawData.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries)
                                  .Select(line => line.Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries))
                                  .Where(parts => parts.Length == 3); // 确保每个条目都包含三个有效字段
        
        // 2. 转换为带数字版本号的对象,方便版本比较
        var parsedMovies = movieEntries.Select(parts => new 
        {
            Name = parts[0].Trim(),
            Author = parts[1].Trim(),
            Version = int.Parse(Regex.Match(parts[2], @"\d+").Value) // 从vX格式中提取纯数字版本号
        });
        
        // 3. 按电影名分组,提取每组的最高版本
        var latestVersionsPerMovie = parsedMovies.GroupBy(m => m.Name)
                                                 .Select(group => new 
                                                 {
                                                     MovieName = group.Key,
                                                     LatestVersion = group.Max(m => m.Version)
                                                 });
        
        // 4. 找出所有电影里的最高版本号,再筛选对应电影
        int topVersionNumber = latestVersionsPerMovie.Max(m => m.LatestVersion);
        var targetMovies = latestVersionsPerMovie.Where(m => m.LatestVersion == topVersionNumber)
                                                 .Select(m => m.MovieName);
        
        // 输出结果
        Console.WriteLine("符合预期的电影:");
        foreach (var movie in targetMovies)
        {
            Console.WriteLine(movie);
        }
        // 最终输出:DDLJ、the hero
    }
}

关键细节说明

  • 文本拆分适配:注意你的原始文本用的是中文分号,所以拆分时要对应使用";";如果是英文分号,改成";"即可。
  • 版本号安全比较:用正则表达式提取版本号里的纯数字,避免直接比较字符串(比如"v11"和"v3"字符串比较会出错)。
  • 文件读取适配:如果数据存储在本地文本文件中,只需要把rawData替换成File.ReadAllText("你的文件完整路径")即可。

这样运行代码就能得到你想要的结果啦!

内容的提问来源于stack exchange,提问作者AskMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:30:14