从系列中的每个字符获得最高价值

时间:2019-03-07 09:39:08

标签: c# asp.net webforms

我有一个文本文件,其值类似于

VER A 150 VER A 56 版本131

VER Z 208 VER Z 209 VER Z 250

VER W 300 VER W 200 VER W 124

该系列可以更具个性。现在我想从W300,Z250,A150等每个角色获得最高价值 我在C#中使用.net Webform应用程序

1 个答案:

答案 0 :(得分:0)

这是使用正则表达式的解决方案。我使用StringReader,但是您可以更改为StreamReader以从文件读取

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace ConsoleApplication103
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = 
                        "VER A 150 VER A 56 VER A 131\n" +
                        "VER Z 208 VER Z 209 VER Z 250\n" +
                        "VER W 300 VER W 200 VER W 124\n"
                    ;

            StringReader reader = new StringReader(input);
            string line = "";
            string pattern = @"[^\d]+\d+";
            while ((line = reader.ReadLine()) != null)
            {
                MatchCollection matches = Regex.Matches(line, pattern);
                string[][] splitData = matches.Cast<Match>()
                    .Select(x => x.Value.Trim()
                    .Split(new char[] { ' ' }).ToArray())
                    .ToArray();
                var result = splitData
                    .Select(x => new { letter = x.Skip(1).First(), number = int.Parse(x.Last()) })
                    .OrderByDescending(x => x.number)
                    .FirstOrDefault();
                Console.WriteLine("letter = '{0}', number =  '{1}'", result.letter, result.number);
            }
            Console.ReadLine();
        }
    }


}