数组中的C#排序元素
我正试图对我的结果进行排序 例如:数组中的C#排序元素,c#,sorting,C#,Sorting,我正试图对我的结果进行排序 例如:result=04,07,01,57,83,39Expect:result=01,04,07,39,57,83 我一直在尝试使用array.sort,但结果将像,,,,0001345778那样返回 那么,有什么办法可以达到我的预期效果呢 这是我尝试执行的代码: String result = 04,07,01,57,83,39; Sorting(result); public static string Sorting(string input) {
result=04,07,01,57,83,39
Expect:result=01,04,07,39,57,83
我一直在尝试使用array.sort,但结果将像,,,,0001345778那样返回
那么,有什么办法可以达到我的预期效果呢
这是我尝试执行的代码:
String result = 04,07,01,57,83,39;
Sorting(result);
public static string Sorting(string input)
{
char[] characters = input.ToArray();
Array.Sort(characters);
return new string(characters);
}
您可以这样做:
public static void Main()
{
int[] arr = new int[] {04,07,01,57,83,39};
Array.Sort(arr);
foreach(int value in arr)
{
Console.Write(value + " ");
}
}
string[] values = {"one", "two", "three", "four"};
int[] sorted = str.Split(',')
.Select(s => int.Parse(s.Trim()))
.OrderBy(val => val)
.ToArray();
我注意到代码中缺少两件事:数组声明中的括号为string[]或int[],要声明数组文字,语法如下:
public static void Main()
{
int[] arr = new int[] {04,07,01,57,83,39};
Array.Sort(arr);
foreach(int value in arr)
{
Console.Write(value + " ");
}
}
string[] values = {"one", "two", "three", "four"};
int[] sorted = str.Split(',')
.Select(s => int.Parse(s.Trim()))
.OrderBy(val => val)
.ToArray();
原始数据是字符串还是整数是不明确的
如果它是一个整数,@Carlos Jafet Neto的答案将是合适的
如果是字符串,则如下所示
static void Main(string[] args)
{
String result = "04,07,01,57,83,39";
Console.WriteLine(Sorting(result));
}
public static string Sorting(string input)
{
string[] characters = input.Split(',');
Array.Sort(characters);
return string.Join(',',characters);
}
首先,代码中有一个编译错误(字符串文字应该包含在“like”中,这是c#string“
)
其次,当您对字符串执行ToArray()
时,会返回一个字符数组,该字符串的字符数组如下“01,02,03”
:['0','1',',',',',','0','2',',',',','0','3']
因此,要将此字符串作为整数数组进行排序,首先应将其转换为如下所示的整数数组:
public static void Main()
{
int[] arr = new int[] {04,07,01,57,83,39};
Array.Sort(arr);
foreach(int value in arr)
{
Console.Write(value + " ");
}
}
string[] values = {"one", "two", "three", "four"};
int[] sorted = str.Split(',')
.Select(s => int.Parse(s.Trim()))
.OrderBy(val => val)
.ToArray();
或者正如@kunif在中正确注意到的那样,如果需要返回字符串而不是整数数组,则可以在拆分后对字符串数组进行排序(无需在int
中进行解析)。但是请注意,如果字符串中有长度不同的值,如153和16,这可能会导致错误的结果,因为字符串是按字符排序的,而且由于'5'
小于'6'
,“153”
小于“16”
。我猜您在值中添加了前导零以防止此问题发生。所以正确的答案实际上取决于你的需要