用升序排序数字字符串

时间:2017-07-18 04:06:35

标签: c#

我目前有一个看起来像这样的字符串:

string numbers = "55;9;20;3";

我如何按升序排列数字:

string numbers = "3;9;20;55";

3 个答案:

答案 0 :(得分:3)

您可以尝试使用String.Join,OrderBy和int.Parse的组合,如下所示:

numbers=  String.Join(";", 
         numbers.Split(';').OrderBy(x=> int.Parse(x)));

您也可以查看此working example

答案 1 :(得分:0)

您可以使用System.Linq命名空间:

using System.Linq;

 ...

  string numbers = "55;9;20;3";
  string output = String.Join(",", numbers.Split(';').Select(x => int.Parse(x)).OrderBy(x => x));

答案 2 :(得分:0)

我将这分为四个步骤。

// 1) Split the numbers apart using based on the delimiting character ';' 
var splitString = numbers.Split(';');

// 2) Convert the array of `string` to an array of `int`
var numberArray = splitString.Select(x => int.Parse(x));

// 3) Order the array which has been output by the `Split` method.
var orderedArray = numberArray.OrderBy(x => x);

// 4) Join the string back together again in the correct order, delimited by ';'
var orderedNumbers = string.Join(";", orderedArray);

这可以被压缩成更少的代码行,但是通过多个阶段的操作,它可以让你很好地理解正在发生的事情。

例如,以下是一行代码中的相同逻辑:

string orderedNumers = string.Join(";", numbers.Split(';').OrderBy(x => int.Parse(x)));