C# 如何获取字符串列表中重复次数最多的单词?
我有一个字符串列表。我想提取列表中重复次数最多的单词 例如:C# 如何获取字符串列表中重复次数最多的单词?,c#,C#,我有一个字符串列表。我想提取列表中重复次数最多的单词 例如: List<string> mylist=new List<string>(); mylist.Add("book is good "); mylist.Add("i like flowers "); mylist.Add("i reading book"); 列表删除单词的方法是: public static List<string> delStr(List<string> li
List<string> mylist=new List<string>();
mylist.Add("book is good ");
mylist.Add("i like flowers ");
mylist.Add("i reading book");
列表删除单词的方法是:
public static List<string> delStr(List<string> list, string str, bool t)
{
if (t)
{
string s;
for (int i = 0; i < list.Count; i++)
{
s = list[i];
foreach (var i1 in notWord)
{
s = s.Replace(i1, "");
}
list[i] = s;
}
}
else
{
string s;
for (int i = 0; i < list.Count; i++)
{
s = list[i];
s = s.Replace(str, "");
list[i] = s;
}
}
return list;
}
公共静态列表delStr(列表列表、字符串str、bool t)
{
if(t)
{
字符串s;
for(int i=0;i
我想知道它是否正确,或者有更好的方法吗?使用Linq:
List<string> mylist = new List<string>();
mylist.Add("book is good ");
mylist.Add("i like flowers ");
mylist.Add("i reading book");
var mostRepeatedWord = mylist.SelectMany(x => x.Split(new [] { " " },
StringSplitOptions.RemoveEmptyEntries))
.GroupBy(x => x).OrderByDescending(x => x.Count())
.Select(x => x.Key).FirstOrDefault();
List mylist=new List();
mylist.Add(“书是好的”);
添加(“我喜欢花”);
mylist.Add(“我阅读的书”);
var mostRepeatedWord=mylist.SelectMany(x=>x.Split(new[]{”“}),
StringSplitOptions.RemoveEmptyEntries)
.GroupBy(x=>x).OrderByDescending(x=>x.Count())
.Select(x=>x.Key).FirstOrDefault();
- 按空格拆分:使用
字符串。拆分
- 将其展平为单个单词列表:使用
选择many
- 按每个单词分组:使用
李>GroupBy
- 按发生顺序:使用降序
和OrderByDescending
李>Count
- 获取第一个元素:使用
FirstOrDefault
列表
或什么?列出我的列表@user3185569@zeynabfarzaneh应该是句子。ToArray()…
等@zeynabfarzaneh我试过你的代码,最重复的单词
具有书@Berkay无需ToArray
public static List<string> finde(List<string> list)
{
List<string> newlist = new List<string>();
fillList();
delStr(list, "", true);
for (int i = 0; i < 6; i++)
{
var mostRepeatedWord = list.SelectMany(x => x.Split(new[] { " " },
StringSplitOptions.RemoveEmptyEntries))
.GroupBy(x => x).OrderByDescending(x => x.Count())
.Select(x => x.Key).FirstOrDefault();
if (mostRepeatedWord!="")
newlist.Add(mostRepeatedWord);
delStr(list, mostRepeatedWord, false);
}
return newlist;
}
public static List<string> delStr(List<string> list, string str, bool t)
{
if (t)
{
string s;
for (int i = 0; i < list.Count; i++)
{
s = list[i];
foreach (var i1 in notWord)
{
s = s.Replace(i1, "");
}
list[i] = s;
}
}
else
{
string s;
for (int i = 0; i < list.Count; i++)
{
s = list[i];
s = s.Replace(str, "");
list[i] = s;
}
}
return list;
}
List<string> mylist = new List<string>();
mylist.Add("book is good ");
mylist.Add("i like flowers ");
mylist.Add("i reading book");
var mostRepeatedWord = mylist.SelectMany(x => x.Split(new [] { " " },
StringSplitOptions.RemoveEmptyEntries))
.GroupBy(x => x).OrderByDescending(x => x.Count())
.Select(x => x.Key).FirstOrDefault();