我正在使用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