排列最小到最大的整数

时间:2010-10-11 07:33:59

标签: c# .net

string strArr="5,3,8,1,9,2,0,6,4,7";

我想重新排列数字的顺序,因此结果将如下所示:

string result ="0,1,2,3,4,5,6,7,8,9";

有什么想法吗?

5 个答案:

答案 0 :(得分:20)

拆分,排序和加入:

string[] nums = strArr.Split(',');
Array.Sort(nums);
string result = String.Join(",", nums);

或者:

string result =
  String.Join(",",
    strArr.Split(',')
    .OrderBy(s => s)
    .ToArray()
  );

如果您有一个数字较大的字符串需要按数字排序,则不能将它们排序为字符串,例如“2”> “1000”。您可以将每个子字符串转换为数字,排序,然后将其转换回来:

string result =
  String.Join(",",
    strArr
      .Split(',')
      .Select(s => Int32.Parse(s))
      .OrderBy(n => n)
      .Select(n => n.ToString())
      .ToArray()
  );

或者,正如mastoj建议的那样,解析排序中的字符串:

string result =
  String.Join(",",
    strArr
      .Split(',')
      .OrderBy(s => Int32.Parse(s))
      .ToArray()
  );

答案 1 :(得分:3)

Guffa答案中其中一个版本的缩短版本:

var res = String.Join(",", str.Split(',').OrderBy(y => int.Parse(y)).ToArray());

答案 2 :(得分:2)

分裂和加入:

string strArr = "5,3,8,1,9,2,0,6,4,7";
string[] sArr = strArr.Split(',');
Array.Sort(sArr);
string result = string.Join(",", sArr);

答案 3 :(得分:0)

您可以使用string.split(char[])方法创建string数组。

使用此数组,您可以调用Array.Sort(T)方法,该方法将项目按数字升序排序(对于您的示例)。

使用这个排序后的数组,您可以调用String.Join(string, object[])将它再次拉成一个字符串。

答案 4 :(得分:0)

string arr = "5,3,8,1,9,2,0,6,4,7";
string result = arr.Split(',').OrderBy(str => Int32.Parse(str)).Aggregate((current, next) => current + "," + next);