C# 正则/其他 判断字符串出现次数最多的
如下需求:有一字符串:string key="中国,河南,合肥,中国,中国人,河南,字符串,字符串,字符串,字符串,中国人"
判断字符串key中出现频率最高的3个字符串,结果如:string sum="字符串,中国,河南"
不知道怎么实现? --------------------编程问答-------------------- string key = "中国,河南,合肥,中国,中国人,河南,字符串,字符串,字符串,字符串,中国人";
var query = key.Split(',').GroupBy(x => x).OrderBy(x => x.Count()).Select(x => x.Key).Take(3);
foreach (var item in query)
Response.WriteLine(item); --------------------编程问答-------------------- 应该是降序
string key = "中国,河南,合肥,中国,中国人,河南,字符串,字符串,字符串,字符串,中国人";--------------------编程问答-------------------- 正则请用到合适的地方,这里用Linq很方便就可以操作了。
var list = Regex.Split(key, @"[,,]", RegexOptions.IgnorePatternWhitespace).GroupBy(a => a).OrderByDescending(a => a.Count()).Select(a =>a.Key).Take(3).ToList();
/*
[0] "字符串" string
[1] "中国" string
[2] "河南" string
*/
--------------------编程问答-------------------- 谢谢各位大侠啊,不知道那种效率高些? --------------------编程问答--------------------
var query = "中国,河南,合肥,中国,中国人,河南,字符串,字符串,字符串,字符串,中国人".Split(',').GroupBy(x => x).Select(x => new { key = x.Key, nums = x.Sum(p => p.Count()) }).Take(3);
foreach (var item in query)
{
Console.WriteLine("字符串:"+item.key+" 次数:"+item.nums);
}
Console.Read();
+1 --------------------编程问答--------------------
都一样。因为思路都是一样的。 --------------------编程问答--------------------
谢谢各位大侠了哈,我语句这样写的
var query = Key.Split(',').GroupBy(x => x).Select(x => new { key = x.Key, nums = x.Sum(p => p.Count()) }).Take(10).OrderByDescending(x => x.nums);
现在,我想先对Key中分割的字符串按长度排序,然后分组查处出现频率高的10个字符串怎么写呢?
再次感谢~ --------------------编程问答-------------------- 思路是关键,有思路最好,再加调试成功和经验大幅增长
公历→农历
2013年06月08日
双子座
二〇一三年五月初一
癸巳〖蛇〗 戊午月 乙巳日 丁亥时
今属:木;五行:水火土木;缺:金。
纳音五行:长流水。 --------------------编程问答--------------------
被抢答完啦~顶一个呗~ --------------------编程问答--------------------
你自己写一个根据逗号分隔字符的程序,再写一个词法分析程序,你认为哪一个运行效率会低100倍? --------------------编程问答--------------------
加一个OrderBy(x => x.Length) --------------------编程问答-------------------- 期待答案
-----------------------
公历→农历
2013年06月08日
双子座
二〇一三年五月初一
癸巳〖蛇〗 戊午月 乙巳日 丙子时
今属:木;五行:水火土木;缺:金。
纳音五行:长流水。
补充:.NET技术 , ASP.NET