我有低於該文本文件:劈裂成線然後到變量
001妙蛙種子45 49 49 65 65 45草毒
002 Ivysaur 60 62 63 80 80 60草毒
003妙蛙花80 82 83個100個100個80個草毒
004火龍39 52 43 60 50 65火焰
005火恐龍58 64 58 80 65 80火焰
我寫這片代碼將其分成行然後變成變量,但它拒絕工作,我的道歉,如果我在錯誤的地方問這個。 (統一C#問題)。
var lines = textFile.text.Split("\n"[0]);
allMonsters = new Monsters[lines.Length];
List<string> lineSplit = new List<string>();
for (int i = 0; i < lines.Length; i++) {
Debug.Log(lines[i]);
lineSplit.Clear();
lineSplit = lines[i].Split(' ').ToList();
int ID = int.Parse(lineSplit[0]);
string Name = lineSplit[1].ToString();
float HP = float.Parse(lineSplit[2]);
float ATK = float.Parse(lineSplit[3]);
float DEF = float.Parse(lineSplit[4]);
float SPATK = float.Parse(lineSplit[5]);
float SpDEF = float.Parse(lineSplit[6]);
float speed = float.Parse(lineSplit[7]);
FirstType Ft = (FirstType)System.Enum.Parse(typeof(FirstType),lineSplit[8]);
SecondType ST = (SecondType)System.Enum.Parse(typeof(SecondType),lineSplit[9]); }
該代碼適用於第一行,但隨後在此代碼的第二次運行我得到null引用對象錯誤,請幫助我。
請注意,變量被分配給它們,以便它們在代碼之後不被覆蓋。
編輯:LineSplit變量超過1200個元素長,所以我不認爲團結正確清理數組可能是這個問題?
你確定它正在分割線嗎?我將首先註銷每次嘗試解析的行,以便您可以直接看到它正在處理的內容。我想在這一點上,它將整個文件作爲一個單獨的一行讀入。當你說它適用於第一行但不適用於後續行時,我就會想到這一點。如果您在調試日誌中獲得有關如何分析行的更多信息,可以幫助我們找出問題所在。 – CShannon 2015-03-31 22:03:41
你確定這些行以'\ n'結尾嗎?它也可能包含'\ r',這樣在解析時會干擾結果的完整性。 (我花了很長時間才意識到這是我的一個代碼中的錯誤)。我不知道C#,但如果支持,請嘗試使用正則表達式(「$」=行尾)分割或全部替換「\ r」。 – s3lph 2015-03-31 22:03:58
@Raymond Tunstill你可以檢查女巫的迭代和行你得到異常? – 2015-03-31 22:10:17