【发布时间】:2014-10-08 04:31:09
【问题描述】:
我编写了一个包含列表的代码,我想按字母和数字对列表进行排序。
例如列表中的第一项是
list[0] = "INPUT 10"-
list[1] = "INPUT 5"。
我希望像这样重新组织我的列表:
list[0] = "INPUT 5"-
list[1] = "INPUT 10"。
所以基本上我的程序从选中的列表框中获取选中的项目,将它们存储在一个列表中,我希望它按字母顺序重新组织列表。
选中的列表框有 INPUT 1、INPUT 2、INPUT 3...等第四项。谁能建议我如何解决这个问题?
更新代码
我已经更新了我的代码,现在这段代码将字符串拆分为 INPUT 和 10。“q”列表获取输入框中的选中项,字符串“s”数组从 q 列表中获取拆分数据。然后“数字”列表只获取字符串的数字部分,例如“INPUT 5”,数字列表只会得到“5”。然后我想对这些数字进行排序,并结合排序后的数字列表和字符串构建另一个字符串“输入”并将其添加到输出选中列表框。我的代码虽然不起作用......有什么建议吗?它应该对数字进行排序,但它没有......有人对为什么这段代码不起作用有任何建议吗?而且我不断收到关于数组能够处理负整数的错误消息,什么不能。
List<string> q = new List<string>();
List<string> numbers = new List<string>();
private void button_ekle_Click(object sender, EventArgs e)
{
for (int k = clb_input.Items.Count - 1; k >= 0; k--)
{
if (clb_input.GetItemChecked(k) == true)
{
q.Add(clb_input.Items[k].ToString());
//clb_output.Items.Add(clb_input.Items[k]);
clb_input.Items.RemoveAt(k);
}
else { }
}
string[] s = new string[q.Count * 2];
//string[] numbers=new string[q.Count/2];
for (int t = 1; t <= q.Count * 2; t++)
{
if (q != null)
s = q[t - 1].ToString().Split(' ');
else { s[t] = null; }
}
for (int x = 1; x <= q.Count; x++)
{
if (s[2 * x - 1] != null)
{
numbers[x - 1] = s[2 * x - 1];
numbers.Sort();
clb_output.Items.Add("INPUT "+ numbers[x - 1].ToString());
}
else { numbers[x - 1] = null; }
}
}
【问题讨论】:
-
错字“我想像 list[0]=INPUT 5 和 list[1]=10 一样重新组织我的列表”?
-
如何更改列表框以使用零填充数字,例如
INPUT 010,所以字母排序也是数字的? -
您可以剥离“INPUT”部分,并将其余部分解析为 int。当您再次添加它们时,您可以再次构建字符串:“INPUT” + intval。
-
我最初的想法是拆分字符串并比较数字,但后来索引混淆了,我无法完全编写代码,所以我想看看是否有类似的方法来列出。排序()
-
我已经更新了我的代码,所以它现在拆分了字符串,我尝试对数字进行数字排序,但我不断收到我的数组无法获得负整数的错误
标签: c# arrays list sorting dynamic