将字符串分类的算法

capsM 2016-03-17 04:07:30
现有一需求需要对现有字符串分类,示例如下:

StringExp1 = “X1_Y1”;
StringExp2 = “X2_Y2”;
StringExp3 = “X1_Y2”;
StringExp4 = “X2_Y1”;


1、根据Y参数进行分类,即Y1是一类,Y2是一类;
2、根据X参数进行分类,即X1是一类,X2是一类;

这样在程序设计的时候由于判断条件很多(实际项目中更复杂,要根据Y类判断是否要对X进行计算),导致输出项很多,如上例中输入项为1个字符串,输出项就有4种可能。

是否存在类似的算法模型或编程思想可以借鉴,谢谢大家!
...全文
268 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
也可以直接一次分组 GroupBy(xy =>new { y =xy[1], x= xy[0]}) 只有x与y都相同才会看作一组
  • 打赏
  • 举报
回复
var arr = new string[] { "X1_Y1", "X2_Y2", "X1_Y2", "X2_Y1", "X3_Y1" }; var query = arr.Select(item => item.Split('_')).GroupBy(xy => xy[1]); foreach (var yGroup in query) { Console.WriteLine("Key:" + yGroup.Key); //再按x分组 foreach (var xGroup in yGroup.GroupBy(g => g[0])) { Console.WriteLine("\tSubKey:{0}\tItems:{1}", xGroup.Key, string.Join(",", xGroup.SelectMany(g => g).ToArray())); } } Console.ReadLine(); //output Key:Y1 SubKey:X1 Items:X1,Y1 SubKey:X2 Items:X2,Y1 SubKey:X3 Items:X3,Y1 Key:Y2 SubKey:X2 Items:X2,Y2 SubKey:X1 Items:X1,Y2 代码块出问题了,所有的关键字都不见了
  • 打赏
  • 举报
回复
static void GroupString(params string[] arr)
{
    var group = arr.GroupBy(s => s.Split('_').First(a => a.StartsWith("X")));
    foreach (var g in group)
    {
        Console.WriteLine(string.Join(" ", g));
    }
}
调用,仅供参考
GroupString("X1_Y1", "X2_Y2", "X1_Y2", "X2_Y1");
capsM 2016-03-17
  • 打赏
  • 举报
回复
引用 1 楼 kxm_2012 的回复:
没太看懂你的问题是什么
抱歉表达能力太差,就是现在我有很多上述蓝色字体格式的字符串,现在要按照一定的规则将它们分类: 1、先按Y参数分,这样就分成了如下两类: A: StringExp1 = “X1_Y1”; StringExp4 = “X2_Y1”; B: StringExp2 = “X2_Y2”; StringExp3 = “X1_Y2”; 2、再按X参数分,这样就分成了如下四类: A1: StringExp1 = “X1_Y1”; A2: StringExp4 = “X2_Y1”; B1: StringExp2 = “X2_Y2”; B2: StringExp3 = “X1_Y2”; 不知道这样清楚没有……
魂之挽歌来袭 2016-03-17
  • 打赏
  • 举报
回复
没太看懂你的问题是什么

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧