如何对从文本框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"
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
这只是实现了一个简单的冒泡排序来对单词的长度进行排序。如果你有任何问题,请告诉我。