我目前有一个看起来像这样的字符串:
string numbers = "55;9;20;3";
我如何按升序排列数字:
string numbers = "3;9;20;55";
答案 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)));