如何解决元素字符串中的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
详细信息:
- 例如,将“ A1-4”放入数组{“ A1”,“ 4”}
- 这将数组的结果序列按其第一个元素(例如“ A1”)分组
- 这使用
Enumerable.Range(1,x.Count())
创建序列1、2,...(每个组中的元素数量一样多),然后将新字符串创建为“(groupname)-(index)”。SelectMany
将结果展平为单个序列。 - 从处理后的序列中创建新列表
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 举报,一经查实,本站将立刻删除。