![](/img/trans.png)
[英]How to sort a list of strings with a specific format using string.split?
[英]How to sort strings by length using List<string>.Sort?
我想按长度对我的字符串列表进行排序
var weasleys = new List<string>{"Bill", "Charlie", "Percy", "Fred", "George", "Ron", "Ginny"};
我知道如何使用OrderBy
做到这一点。
weasleys.OrderBy(x => x.Length)
但我想知道如何使用List<T>.Sort
。 如何?
有一个Sort(Comparison<T>)
重载 ,该重载需要一个Comparison<T>
委托。 这样,您就可以在相应的Length
值上使用CompareTo
方法:
weasleys.Sort((x, y) => x.Length.CompareTo(y.Length));
请注意,与LINQ OrderBy
方法不同,如果您打算这样做,则Sort
会weasleys
更改weasleys
List。
这应该做
var weasleys = new List<string>{"Bill", "Charlie", "Percy", "Fred", "George", "Ron", "Ginny"};
var t = weasleys.OrderBy(x => x.Length).ToList<string>();
您可以使用数组列表执行此操作...
public class SortStringLength : IComparer
{
public int Compare(Object s1, Object s2)
{
if (s1.ToString().Length == s2.ToString().Length)
return String.CompareOrdinal(s1.ToString(), s2.ToString());
if (s1.ToString().Length > s2.ToString().Length)
return 1;
return -1;
}
}
然后,使用IComparer
...
static void Main(string[] args)
{
var weasleys = new ArrayList { "Bill", "Charlie", "Percy",
"Fred", "George", "Ron", "Ginny" };
var sortLength = new SortStringLength();
weasleys.Sort(sortLength);
foreach (var weasley in weasleys)
{
Console.WriteLine(weasley);
}
Console.ReadLine();
}
有清单...
public class SortStringLength : IComparer<string>
{
public int Compare(string x, string y)
{
if (x.Length == y.Length)
return String.CompareOrdinal(x, y);
if (x.Length > y.Length)
return 1;
return -1;
}
}
和用法...
static void Main(string[] args)
{
var weasleys = new List<string> { "Bill", "Charlie", "Percy",
"Fred", "George", "Ron", "Ginny" };
var sortLength = new SortStringLength();
weasleys.Sort(sortLength);
foreach (var weasley in weasleys)
{
Console.WriteLine(weasley);
}
Console.ReadLine();
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
public class Program
{
public static void Main()
{
List<string> dictionary = new List<string>() { "aaa", "aaaa", "a", "aa" };
var orderedDic = dictionary.Select(x => new
{
val = x,
length = x.Length
}).OrderBy(x => x.length).ToList();
dictionary = orderedDic.Select(x => x.val).ToList();
Console.WriteLine(string.Join(",", dictionary));
}
}
我在这里使用的方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.