string strArr="5,3,8,1,9,2,0,6,4,7";
我想重新排列数字的顺序,因此结果将如下所示:
string result ="0,1,2,3,4,5,6,7,8,9";
有什么想法吗?
答案 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);