如何对从文本框1中提取的字符串数组进行排序,并在C#中显示文本框2中的更改

本文关键字:文本 并在 排序 显示 字符串 提取 数组 | 更新日期: 2023-09-27 18:25:46

所以,我尝试了很多不同的东西,但似乎都不起作用——请原谅我缺乏知识——我对C#还很陌生。问题是,我应该做一个小项目来演示数组如何在C#中工作。

我使用了两个文本框,一个用于输入,另一个用于输出。我正在尝试按长度对文本框1中的字符串进行排序,并在文本框2中显示排序后的数组。我对建议持开放态度-Array.Sort对我来说并没有发挥它的魔力,我也尝试了OrderBy,尽管我可能做得不对。不管怎样,我很感谢你们的建议,伙计们

这是我尝试过的一个例子。

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

如果我在文本框1中有

"I am driving a car"

我希望文本框2中的文本为

"Driving car am a I"

如何对从文本框1中提取的字符串数组进行排序,并在C#中显示文本框2中的更改

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

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

使用方法Sort。例如: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

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