我遇到了一個關于 indexOutOfBounds 異常的奇怪問題。我需要讀取數組中每個字符串的第一個字符。我在第 5 行 (linesRead[i][0]) 中遇到異常。對我來說最奇怪的部分是,當我嘗試添加用于調試 Console.WriteLine(linesRead[0][0]) / Console.WriteLine(linesRead[linesRead.Length-1][0]) 的行時,它工作得很好。string[] linesRead = System.IO.File.ReadAllLines(@"test.txt"); //Just a bunch of linesfor (int i = 0; i < linesRead.Length; i++){ if (linesRead[i][0] == '5') { //Do stuff }}The text inside of test.txt:5|f-----g-----c---g-----a---|6|--c-----------------------|5|---Aa-f-----g-----c-------|5|------ccdf-ff-----g-----c-|6|--------------c-----------|5|--g-----a------Aa-f-----g-|5|----c-------------ccdf-f--|
4 回答

aluckdog
TA貢獻1847條經驗 獲得超7個贊
if (linesRead[i][0] == '5')
如果行為空,將觸發此錯誤。
嘗試
if (linesRead[i].StartsWith("5"))
反而。

叮當貓咪
TA貢獻1776條經驗 獲得超12個贊
我會空/空檢查每一行,以防萬一。
var linesRead = System.IO.File.ReadAllLines(@"test.txt"); //Just a bunch of lines
foreach (var line in linesRead)
{
if (!string.IsNullOrEmpty(line) && line[0] == '5')
{
//Do stuff
}
}

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
如果您有一個空字符串,則該字符linesRead[i][0]
是'\0'
(用于標記字符串的結尾)。
如果將第 5 行更改為,if(linesRead[i].Length > 0 && linesRead[i][0] == '5'))
則可以跳過空字符串情況。

肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
這意味著您的文件中某處有一個空行。
您可以使用以下命令跳過這些行:
if (linesRead[i].Length > 0 && linesRead[i][0] == '5')
- 4 回答
- 0 關注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消