我正在使用TextReader读取制表符分隔文件的每一行。 对于它读取的每一行,我在选项卡上分割并填充字符串数组。 然后,我可以访问字符串数组中的特定位置以获取值。制表符分隔的txt文件从字符串数组中读取int值
这对字符串非常适用:userWorkload.SSN = arrColumns [0];
但是,当我尝试将其中一列转换为int时,我在运行时收到错误消息:userWorkload.contactHours = Convert.ToInt32(arrColumns [9]);
这里是我的代码:
List<UserWorkload> userWorkloads = new List<UserWorkload>();
TextReader tr = File.OpenText("fall11-tab.txt");
string strLine = string.Empty;
string[] arrColumns = null;
while ((strLine = tr.ReadLine()) != null)
{
UserWorkload userWorkload = new UserWorkload();
arrColumns = strLine.Split('\t');
userWorkload.SSN = arrColumns[0];
userWorkload.contactHours = Convert.ToInt32(arrColumns[9]);
userWorkloads.Add(userWorkload);
}
和UserWorkload类只包含简单的getter/setter方法:
class UserWorkload
{
public string SSN { get; set; }
public int contactHours { get; set; }
}
这是我的错误:
未处理的异常:System.FormatException:输入字符串没有一个正确的格式。
在System.Number.StringToNumber(字符串str的NumberStyles选项,NumberBuffer &数的NumberFormatInfo信息,布尔parseDecimal)
在System.Number.ParseInt32(字符串s的NumberStyles风格的NumberFormatInfo信息)
在System.Convert。 ToInt32(字符串值)
在Snyder5Creator.InputFileReader.buildRowList()在C:\用户\ baxter.NET \文件\的Visual Studio 2010 \项目\ User5Creator \ User5Creator \ InputFileReader.cs:线31
在Snyder5Creator.Program。 Main(String [] args)在C:\ Users \ baxter.NET \ Documents \ Visual Studio 2010 \ Projects \ User5Creator \ Snyder5Creator \ Program.cs中:line 24
第31行是:userWorkload.contactHours = Convert.ToInt32(arrColumns [9]);
任何帮助,将不胜感激。
你可以发布该文本文件吗?很明显,它正在炸毁这个元素,但我需要看到这个元素更有帮助。不过,我可能会使用TryParse()作为开始。 – Killnine
你是对的,它最终成为隐藏在其中一行中的不良数据。 感谢TryParse()提示,现在一切正常。 – Baxter