将所有string []覆盖为int []并摆脱错误消息

时间:2019-02-26 20:15:15

标签: c#

在下面的代码中,我得到“ System.FormatException HResult Message =输入字符串的格式不正确。有人可以帮助我摆脱这种情况。谢谢

public static string Str()
{
    string finalNumumber = "";

    // code
    // code
    // code

    foreach (var item in items)
    {                
        finalNummber += item.ToString() + ",";
    }    

    return finalNumumber; // (output here is 3,5,1,8)
}

public static void Main(string[] args)
{
    string dnumber = Str();
    int[] a = Array.ConvertAll(dnumber, int.Parse);
}

3 个答案:

答案 0 :(得分:0)

假设您要在字符串上调用string.Split(',')以将其转换为数组,那么您的代码将留下训练逗号。

I.E。实际的字符串可能是"3,5,1,8,"

您需要修剪逗号或将StringSplitOptions.RemoveEmptyEntries添加到Split()调用中。否则,数组末尾会有一个空字符串,将无法转换。

IE。

string[] dnumber = Str().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)

答案 1 :(得分:0)

Array.ConvertAll 可以将字符串数组作为第一个参数,但是您可以传递字符串。您需要使用 Split 方法将字符串转换为字符串数组,然后将该数组传递给 Array.ConvertAll

public static void Main(string[] args)
{
    string dnumber = Str();
    string[] strArray = dnumber.Split(',');
    int[] a = Array.ConvertAll(strArray, int.Parse);
}

答案 2 :(得分:0)

三种方法来做自己想要的事

public static void Main(string[] args)
{
    string dnumber = Str();
    string[] array = dnumber.Split(',', StringSplitOptions.RemoveEmptyEntries);
    int[] v1 = Array.ConvertAll(array, s => int.Parse(s));
    int[] v2 = Array.ConvertAll(array, int.Parse);
    int[] v3 = array.Select(int.Parse).ToArray();
}