微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

元素字符串中的C#如何生成元素组并按顺序排列它们

如何解决元素字符串中的C#如何生成元素组并按顺序排列它们

i具有类似“ A1-4,A1-6,A1-8,B1-1,B1-2,B1-3,B1-4 ... B1-8”的字符串 在这里,我需要将 A1 元素安排为 A1-1,A1-2,A1-3 ,因为我有3个元素。 如果我有A1-2,A1-3,A1-7,A1-8之类的元素,我需要安排为 A1-1,A1-2,A1-3,A1-4 ,因为我有4个元素

就像这我需要确定类型(A1或A2或B1或Z1),然后按用逗号分隔的数字排列它们。

string _sequenceNum="A1-4,A1-6,A1-8,B1-1,B1-2,B1-3,B1-4...B1-8";
_sequenceNum.split(",");

我的问题是如何识别类别

请帮助我

解决方法

您可以使用LINQ对列表进行分组和处理:

string sequenceNum="A1-4,A1-6,A1-8,B1-1,B1-2,B1-3,B1-4,B1-8";
var sequence = sequenceNum.Split(",");

var newSequence = sequence
  .Select(x => x.Split('-')) // 1
  .GroupBy(x => x[0])        // 2
  .SelectMany(x => Enumerable.Range(1,x.Count()).Select(i => x.Key + "-" + i)) // 3
  .ToList();                 // 4

详细信息:

  1. 例如,将“ A1-4”放入数组{“ A1”,“ 4”}
  2. 这将数组的结果序列按其第一个元素(例如“ A1”)分组
  3. 这使用Enumerable.Range(1,x.Count())创建序列1、2,...(每个组中的元素数量一样多),然后将新字符串创建为“(groupname)-(index)”。 SelectMany将结果展平为单个序列。
  4. 从处理后的序列中创建新列表
,
   string _sequenceNum = "A1-4,B1-8,B1-2";         
            var test = _sequenceNum.Split(',');           
              Array.Sort(test);        
             foreach (var a in test)         
                 Console.WriteLine(a);        
             foreach (var a in test.Where(i => i.StartsWith("A")))         
                 Console.WriteLine(a);  
        Console.WriteLine(string.Join(",",test));        
             Console.ReadLine();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。