如何对取自 textbox1 的字符串数组进行排序并在 C# 中显示 textbox2 中的更改?

How to sort an array of strings taken from textbox1 and display the change in textbox2 in C#?

所以,我尝试了很多不同的方法,但似乎没有任何效果 - 请原谅我缺乏知识 - 我是 C# 的新手。 问题是,我应该做一个小项目来演示数组在 C# 中的工作方式。

我使用了两个文本框,一个用于输入,另一个用于输出。我正在尝试按长度对 textbox1 中的字符串进行排序,并在 textbox2 中显示排序后的数组。我愿意接受建议 - Array.Sort 对我来说并没有发挥它的魔力,我也尝试了 OrderBy,尽管我可能以错误的方式做到了。无论如何,伙计们,我会很感激你的建议

这是我尝试过的示例。

string[] myArray= textBox.Text.Split(' '); 
textBox2.Text= myArray.OrderByDescending(s => s.Length);

如果我在 textbox1 中有

"I am driving a car"

我希望我在 textbox2 中的文字是

"Driving car am a I"
string[] myArray= textBox.Text.Split(" "); 
textBox2.Text= string.Join(" ", myArray.OrderByDescending(s => s.Length));

你很接近 :) 只需要将数组中的每个字符串连接成一个字符串。如您所见,您可以使用 string.Join 方法。第一个参数是一个分隔符,第二个是字符串数组。在这种情况下 - 排序列表。

使用排序方法。例如: Array.Sort Method (Array)

据我了解,您正在尝试按长度对第一个文本框中的单词进行排序,然后将其输出到第二个文本框中。使用 split 是在正确的轨道上,但我会手动进行排序等,而不是尝试使用预构建的方法,以便您了解正在发生的事情。做这样的事情:

        string textBox1 = //text from text box 1
        string output = "";
        string[] s = textBox1.Split(' ');

        int itemsSorted = 0;
        while (true)
        {
            itemsSorted = 0;
            for (int i = 0; i < s.Length-1; i++)
            {
                if(s[i].Length > s[i+1].Length)
                {
                    string temp = s[i];
                    s[i] = s[i + 1];
                    s[i + 1] = temp;
                    itemsSorted++;
                }
            }
            if (itemsSorted == 0)
                break;
        }

        for(int i = 0;i < s.Length;i++)
        {
            output += s[i] + " ";
        }

        //trim trailing space if you would like
        //text box 2 text set to = output

这只是实现了一个简单的冒泡排序来对单词的长度进行排序。如果您有任何问题,请告诉我。