不使用C#中的split方法对字符串数组进行排序?

时间:2013-09-08 07:41:12

标签: c# arrays sorting

我有一个包含月份名称的数组:

String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
                   "July", "Aug", "Sep", "Oct","Nov", "Dec"};

我想对这个数组进行排序。我尝试了不同的代码但失败了。

如何在不使用split方法的情况下对此数组进行排序?

3 个答案:

答案 0 :(得分:3)

一个简单的

Array.Sort(month);

按名称对数组进行排序。

如果您想要不同类型的排序,可以使用自己的IComparer排序。

例如,一个简单的

public class myComp : IComparer<string>
{

  #region IComparer<string> Members

  public int Compare(string x, string y)
  {
     return x.ToLower().CompareTo(y.ToLower());
  }

  #endregion
}

然后再做

Array.Sort(month, new myComp());

答案 1 :(得分:2)

你可以这样排序:

var sortedList = months.OrderBy (s => s).ToArray();

您可以根据需要将s=>s部分替换为任何其他排序键。例如,如果您想按第二个字符排序,可以写下:

var sortedList = months.OrderBy (s => s[1]).ToArray();

仅供参考,OrderBy方法是LINQ的一部分,它与C#3.0一起提供。因此,您的文件中应该有using System.Linq

答案 2 :(得分:0)

你可以这样试试。

string[] month= new string[]
        {
            "Jan", "Feb", "Mar", "Apr", "May", "Jun", 
            "July", "Aug", "Sep", "Oct","Nov", "Dec"
        };

        Array.Sort(month, StringComparer.InvariantCulture);

        Array.ForEach(month, x => Console.WriteLine(x));