所以我试图从文本文件中读取并将每个字段存储到一个数组中。但是当我尝试将accountNumber转换为Int时,我收到错误。
public bool matchCustomer(int accountID){
string[] data = null;
string line = Global.currentFile.reader.ReadLine();
while (line != null)
{
data = line.Split('*');
this.accountNumber = Convert.ToInt32(data[0]);
line = Global.currentFile.reader.ReadLine();
if (accountID == this.accountNumber)
{
return true;
}
}
return false;
}
答案 0 :(得分:1)
那是因为data [0]不能转换为int。什么是运行时的数据[0]?
您可以使用:
int value;
if(Int32.TryParse(data[0], out value))
{
accountNumber = value;
}
else
{
//Something when data[0] can't be turned into an int.
//You'll have to decide this logic.
}
答案 1 :(得分:1)
可能,因为你在字符串中用分隔符*分割:
12345 * Shrek * 1209 * 100,000 * 50,000
你留下了一个间隔号码" 12345"而不是所有数字" 12345"。这导致它不可转换。尝试应用修剪:
this.accountNumber = Convert.ToInt32(data[0].Trim());
另外,请注意带有千位分隔符逗号(50,000和100,000)的字符串。如果它是不可转换的,您可能需要用空字符串替换它:
data[4].Replace(",","").Trim();
答案 2 :(得分:0)
其他两个答案解决了这个问题并修复了,我想提供另一个使用Linq
的替代方案。
您可以使用此替换完整的while
阻止内容。
return line.Split('*').Select(s=> s.Trim().Replace(",", ""))
.Where(c=> Regex.IsMatch(c.Trim(), @"\d+"))
.Select(s=>int.Parse(s.Trim()))
.Any(e=>e == accountId);
工作Demo