string strArr="5,3,8,1,9,2,0,6,4,7";
Я хотел бы изменить порядок чисел, так что результат будет выглядеть следующим образом:устраивая маленьких до самого большого целого числа
string result ="0,1,2,3,4,5,6,7,8,9";
Любая идея?
string strArr="5,3,8,1,9,2,0,6,4,7";
Я хотел бы изменить порядок чисел, так что результат будет выглядеть следующим образом:устраивая маленьких до самого большого целого числа
string result ="0,1,2,3,4,5,6,7,8,9";
Любая идея?
Split, сортировать и присоединиться:
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()
);
Первое решение, отличное от linq, не будет работать, начиная с строк 2character, например. «10» будет меньше «2». +1 для linq. – Grozz
Ваш последний запрос linq длинный. Этого должно быть достаточно с String.Join (",", strArr.Split (','). OrderBy (n => Int32.Parse (n)). ToArray()); –
Я думаю, что это решит проблему: string result = String.Join (",", strArr.Split (','). Выберите (p => Convert.ToInt32 (p)). OrderBy (s => s). Выберите (p => p.ToString()). ToArray()); – Homam
При расщеплении и соединения:
string strArr = "5,3,8,1,9,2,0,6,4,7";
string[] sArr = strArr.Split(',');
Array.Sort(sArr);
string result = string.Join(",", sArr);
Вы можете создать массив string
с методом string.split(char[])
.
С помощью этого массива вы можете вызвать метод Array.Sort(T)
, который будет сортировать элементы в порядке возрастания по возрастанию (для вашего примера).
С помощью этого отсортированного массива вы можете позвонить String.Join(string, object[])
, чтобы снова спрятать его в строку.
Сокращенный вариант одной из версий в ответ Guffa в:
var res = String.Join(",", str.Split(',').OrderBy(y => int.Parse(y)).ToArray());
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);
Пожалуйста, улучшить свой английский, или, по крайней мере, попытаться общаться доходчиво. –
Я считаю, что этот путь лучше. – william