c#输入字符串格式不正确(如何处理损坏的数据?)

时间:2016-02-22 07:55:58

标签: c# string search

我正在创建一个Windows表单,使用String.Compare按顺序搜索3个文件。如果文本框不为空,它将首先按文本框字符串搜索,如果它是空的,则它将按公司字符串搜索。包含数字的文件有一些“损坏”的行ex。 1345.2fd我想通过让它们作为“Sales Figure corrupted”出来来处理这些问题,但是当我运行程序时,我得到输入字符串错误。

该行是42

salesData = decimal.Parse(salesFile.ReadLine().Trim());

2 个答案:

答案 0 :(得分:1)

您必须检查salesFile.ReadLine()是否为空。

decimal salesData = 0;
string s = salesFile.ReadLine();
if (s != null && decimal.TryParse(s.Trim(), out salesData))
{
    // True
}
else
{
    //Your data is error
}

另外:这也可以产生错误,因为你不检查null:

gamesData = gamesFile.ReadLine().Trim();  // <---- May cause Error
salesData = decimal.Parse(salesFile.ReadLine().Trim());  // <---- May cause Error
compData = compFile.ReadLine().Trim();  // <---- May cause Error

答案 1 :(得分:0)

我认为你的问题是由decimal.Parse()函数触发的FormatException。该函数除了数字,但您的格式错误的字符串不是真正的数字,因此抛出异常。您最好使用try-catch并处理错误 参考:https://msdn.microsoft.com/en-us/library/cafs243z(v=vs.110).aspx