通过LinQ查询字符出现次数的实例方法
程序员文章站
2024-02-14 17:44:10
在一个项目中使用到一个问卷调查,在用户完成之后,需要统计所有题目中哪一个选项被选中次数最多。我的实现方法是将所有题目选中的选项拼接为一个字符串,如:abcadaa在分析被选...
在一个项目中使用到一个问卷调查,在用户完成之后,需要统计所有题目中哪一个选项被选中次数最多。
我的实现方法是将所有题目选中的选项拼接为一个字符串,如:abcadaa
在分析被选中次数的时候最初是将字符串变为字符数组,然后进行遍历统计,代码如下:
复制代码 代码如下:
public static int getmaxdiaplaychar(string str, out string val)
{
int times = 0;
val = "";
char max = str[0];
dictionary<char, int> counter = new dictionary<char, int>();
foreach (char c in str)
{
if (!char.isletter(c)) continue;
if (counter.containskey(c)) counter[c]++;
else counter.add(c, 1);
if (counter[max] < counter[c]) max = c;
}
times = counter[max];
val = max.tostring();
return times;
}
这样进行统计效率一般,且感觉有些太复杂了,于是在后期使用linq来进行改进,实现方法如下:
复制代码 代码如下:
string content = "abcadaa";
var ch = content.tochararray();
var query = ch.groupby(s => s).orderbydescending(s => s.count()).tolist();
for (int ri = 0; ri < query.count(); ri++)
{
messagebox.show(query[ri].key + " = " + query[ri].count());
}
这样就可以比较简单的统计具体出现次数,如果需要对出现最少或者最多的字符进行统计,只需要对orderby和tolist进行修改就可以,比较灵活。
复制代码 代码如下:
var querymax = ch.groupby(s => s).orderbydescending(s => s.count()).singleordefault();
var querymin = ch.groupby(s => s).orderby(s => s.count()).singleordefault();
推荐阅读
-
通过LinQ查询字符出现次数的实例方法
-
PHP中substr_count()函数获取子字符串出现次数的方法,phpsubstr_count_PHP教程
-
Java统计一个字符串在另外一个字符串出现次数的方法
-
php通过strpos查找字符串出现位置的方法_PHP教程
-
javascript判断一个字符串或者数组里面出现最多的元素及其出现的次数(代码实例)
-
php获取字符串中各个字符出现次数的方法
-
PHP中substr_count()函数获取子字符串出现次数的方法,phpsubstr_count
-
php实现统计所有字符在字符串中出现次数的方法
-
JS简单判断字符在另一个字符串中出现次数的2种常用方法
-
获取一个字符在一个字符串中出现的次数(两种方法)