有没有办法按字数计数
对字符串列表进行排序var list = new List<string>();
list.Add("The quick brown"); // 5
list.Add("brown fox jumps over"); // 4
list.Add("quick brown fox jumps over the lazy"); //1
list.Add("The quick brown fox jumps") // 3
list.Add("fox jumps over the lazy dog"); // 2
foreach(var item in list)
{
console.Writeline(item);
}
有没有办法在不使用其他列表的情况下生成输出或使用循环来排序
quick brown fox jumps over the lazy
fox jumps over the lazy dog
The quick brown fox jumps
brown fox jumps over
The quick brown
答案 0 :(得分:2)
假设字符串不能为空,则下面应该有效。
foreach(var item in list.OrderByDescending(q => q.Split(' ').Length))
{
console.Writeline(item);
}
答案 1 :(得分:1)
如果您想按字数排序:
list.Sort((a, b) => b.Split(' ').Length - a.Split(' ').Length);
或者,如果您只想按字符串长度排序(也可能是您想要的)
list.Sort((a, b) => b.Length - a.Length);
答案 2 :(得分:1)
您可以使用Sort方法:
your_list.Sort((x,y)=>y.Split(' ').Length - x.Split(' ').Length);
your_list.ForEach(Console.WriteLine);
答案 3 :(得分:0)
如果您希望以稍微更可重复的方式封装逻辑,请执行IComparer<T>
interface,如此。
public class WordCountComparer : IComparer<String>
{
public Int32 Compare(String a, String b)
{
var split = new[] { ' ' };
var aCount = String.IsNullOrWhiteSpace(a) ? 0 : a.Split(split).Length;
var bCount = String.IsNullOrWhiteSpace(b) ? 0 : b.Split(split).Length;
if (aCount == bCount) { return 0; }
if (aCount < bCount) { return 1; } else { return -1; }
}
}
您可以将班级的实例直接传递给List<T>.Sort
method,然后就会对列表进行排序。
list.Sort(new WordCountComparer());