c# - 制表符分隔的txt文件从字符串数组中读取int值

标签 c# int arrays textreader

我正在使用 TextReader 读取制表符分隔文件的每一行。 对于它读取的每一行,我在选项卡上拆分并填充一个字符串数组。 然后我可以访问字符串数组中的特定位置来获取值。

这对于像这样的字符串非常有用: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(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
在 System.Number.ParseInt32(String s, NumberStyles 样式, NumberFormatInfo 信息)
在 System.Convert.ToInt32(字符串值)
在 C:\Users\baxter.NET\Documents\Visual Studio 2010\Projects\User5Creator\User5Creator\InputFileReader.cs 中的 Snyder5Creator.InputFileReader.buildRowList() 处:第 31 行
在 C:\Users\baxter.NET\Documents\Visual Studio 2010\Projects\User5Creator\Snyder5Creator\Program.cs 中的 Snyder5Creator.Program.Main(String[] args):第 24 行

第 31 行是: userWorkload.contactHours = Convert.ToInt32(arrColumns[9]);

对此的任何帮助将不胜感激。

最佳答案

您的一条或多条记录中可能存在无效数据。如果您可以忽略这些错误,则可以使用 int.TryParse:

 int parsedNumber;
 userWorkload.contactHours = int.TryParse(arrColumns[9], out parsedNumber) ? parsedNumber : -1;

关于c# - 制表符分隔的txt文件从字符串数组中读取int值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589940/

相关文章:

c# - 在 Gtk/Gtk 中绘制图表#

c# - Dapper 错误 : Could not load type 'Dapper.SqlMapper'

c# - Java中的异常驱动编程

Tensorflow:如何将整数张量转换为相应的二进制张量

java - 如何从数组中删除一个值

javascript - Bootstrap-Vue:将角色权限实现为多个 b-form-checkbox 数组,显示为 b-table 中的列。不工作

c# - LINQ 子记录为空

C++ 将 Int 拆分为 4 个部分(32 位机)

在C中将二进制字符串转换为int

Javascript 游戏、数组和对象字面量