String到Int.ToList转换的FormatException

时间:2017-09-27 06:34:56

标签: c# exception split

{{1}}

任何人都可以帮助我继续使用这个块的FormatException,“它是日期时间格式,取日期第一个例外”。它是从空格分隔的文本文件中读取的字符串。

2 个答案:

答案 0 :(得分:2)

试试这个:

  List<int> resultList = File
    .ReadLines(data)                      // you've got IEnumerable<string>
    .Select(line => line.Split())         // -/- IEnumerable<string[]>
    .Select(ietms => int.Parse(items[0])) // -/- IEnumerable<int> 
    .ToList();                            // finally, it's List<int> 

我认为这是该行的 1st 项目,应该转换为intint.Parse(items[0]),如果将0更改为正确的索引,必需的。

尝试避免使用ReadAllLines赞成ReadLines:你不会将所有文件(可能很长)读入中的数组一个人去

答案 1 :(得分:1)

问题是ReadAllLines会返回string[]。如果您在此类对象上调用ToString,则会将namespace.classname作为字符串。所以在你的情况下:

  

System.String []

拆分此字符串结果定义不是数字。但是在进入的string[]中,即:

  

System.String []

如果您的文件只有一行带有空格分隔数字,我建议使用File.ReadAllText。它将读取文件的整个内容并将其作为1 string返回。通过这种方式,您几乎可以使用您的代码。

string aresultlist = File.ReadAllText(data);
var bresultlist = aresultlist.Split().Select(s => Convert.ToInt32(s));
List<int> resultlist = bresultlist.ToList(); 

编辑:

根据Gilad Green的建议,您可能在文件中包含无法解析为数字的内容,并会引发异常。为避免这种情况,您可以关注this example