将ReadLine()转换为int

时间:2014-08-26 13:56:20

标签: c# parsing io integer readline

我有一个文件,每行包含{-1,0,1,2,3}的值。它看起来像这样:

我想将所有这些值放在int类型的数组中,如下所示:

int[] linesValue = new int[NUMBER_OF_LINES]; 
int i; 

for (i = 0; i < NUMBER_OF_LINES; i++)
    {
        string tmpVal = reader.ReadLine(); 
        linesValue[i] = Convert.ToInt32(tmpVal);
    }

“NUMBER_OF_LINES”是私有int,“reader”是StreamReader。 当我运行代码时它给我错误:“输入字符串格式不正确” 我试过reader.ReadLine()。ToString()但它仍然不起作用。 如果你们能帮我解决这个问题,我真的很感激。

1 个答案:

答案 0 :(得分:3)

您在string中将最后一行或换行符作为空字符串获取,并且无法转换为int,因此例外。只需为string.IsNullOrWhiteSpace添加支票,如:

{
    string tmpVal = reader.ReadLine(); 
    if(!string.IsNullOrWhiteSpace(tmpVal))
    {
           linesValue[i] = Convert.ToInt32(tmpVal);
    }
}

同时确保使用此检查维护index,因此由于索引增量,您可能最终在数组中出现空条目。

您还可以使用File.ReadLines并将每行解析为int数组,如:

int[] array = File.ReadLines("filePath")
    .Where(r => !string.IsNullOrWhiteSpace((r)))
    .Select(r => int.Parse((r)))
    .ToArray();

寻找使用int.TryParse方法。如果解析失败,TryParse方法组不会引发异常。它们返回bool,指示解析是否成功,并在out参数中提供解析后的值。