Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组中的C#排序元素_C#_Sorting - Fatal编程技术网

数组中的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”
。我猜您在值中添加了前导零以防止此问题发生。所以正确的答案实际上取决于你的需要