为什么我的字符串不能转换为整数?

时间:2018-07-06 19:53:09

标签: c#

我有一个项目列表,每个项目都有数字,然后是一个空格,然后是一个单词。认为拼字游戏。

36 adore
36 adore
27 amigo
31 amino
28 amiss

我正在尝试使用2位数字作为组织项目,可以按值顺序对单词进行排名。

我的列表ComJoined如上所示。

我的代码是:

for (int i = 0; i < ComJoined.Count; i++)
{
    if (i + 1 <= ComJoined.Count)
    {
        int one = (Convert.ToInt32(ComJoined[i].Substring(0, 2)));
        int two = Convert.ToInt32(ComJoined[i + 1].Substring(0, 2));
        if  (one <= two)
        {
            string Stuff = ComJoined[i];
            ComJoined.Insert(i + 1, Stuff);
            ComJoined.RemoveAt(i);
        }
    }
}

由于某种原因,它说“输入字符串的格式不正确”。我读到这意味着该字符串没有int值,但是要转换的部分(前两位数字)显然可以。为什么会这样?

2 个答案:

答案 0 :(得分:0)

对于您的问题,这可能不太复杂:

var words = new SortedDictionary<int, string>();

foreach (var com in ComJoined)
{
    string[] splitCom = com.Split(' ');

    // Assuming your data is in the correct format. You could use TryParse to avoid an exception.
    words.Add(int.Parse(splitCom[0]), splitCom[1]);
}

// Do something with the sorted dictionary...
foreach (KeyValuePair<int, string> word in words)
    Console.WriteLine("{0} {1}", word.Key, word.Value);

答案 1 :(得分:0)

因此,您要按照2位数字的代码对降序排序,并且所有项目都以2位数字的开头?

这将只是一列linq:var sortedList = ComJoined.OrderByDescending().ToList()