2016-12-15 29 views
0

早上好Stack Stack!使用.Split填充字符串數組時,我只能得到一個條目。我需要兩個

我在Unity3d中使用C#。

我從美國地質調查局的rss原子提要中提取一個包含我需要的緯度/經度座標的字符串。一旦我有了字符串,我將它分解到「」,並使用string.Split將兩個條目放入一個數組中。早在劇本,我聲明數組並填充它,像這樣:

string[] shakeup = { "one", "two", "three" }; 

我已經確認這工作得很好,我可以檢索這些條目預期。

但是,一旦我從我的飼料中拉出字符串並分解它,我就會得到一個IndexOutOfRangeException:數組索引超出範圍。當我嘗試從數組中拉出新字符串以將它們轉換爲浮點數時發生錯誤。

我從進料拉出的字符串看起來像這樣:

33.2903333 -115.695

我使用該字符串分割成兩個部分,並用它來填充所述陣列中的代碼是這樣的:

void SplitIt() 
    { 
     //Read line, and split it by whitespace into an array of strings 
     char delimiter = ' '; 
     shakeup = Message.Split(' '); 

     Debug.Log(shakeup[0]); 
     Debug.Log("length is:" + shakeup.Length); 
     Debug.Log(shakeup[1]); 

第二的debug.log(shakeup.Length)返回1 這第三是的debug.log,我嘗試讀回陣列中的第二個條目,這是我得到的錯誤信息。

歡迎任何幫助或建議。我已經通過StackOverflow和UnityAnswers論壇進行搜索和搜索,但尚未能解決這個確切的問題。

我沒有考慮使用名單,但由於該陣列是有史以來唯一的兩個座標,這似乎略少開銷簡單的解決方案(直到我花了12小時,試圖調試它,當然)。

編輯: 這可能是我得到的字符串的問題。它以字符串的形式傳遞,我可以將它打印到控制檯,Unity像其他任何字符串一樣處理它。我從這裏拉:

https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom 34.2495 -118.5568333

第二點,線的第一部分進入陣就好了。如果我打電話給條目「shakeup [0]」,我會按預期得到「34.2495」。這是正在吃東西的字符串的第二部分。

+3

「* shakeup.Length返回一個1 *」井,這是因爲只有一個項目,而不是'1'是數組的最高索引。很有可能你在分割一個沒有空格的字符串 –

+0

如果你執行'Debug.Log(Message.IndexOf(「」));'? – juharr

+0

基於零的索引;) – Johnny

回答

0

感謝大家幫我調試這個!

事實證明,消息字符串正在另一個腳本中更新。該更新干擾了.Split的執行。我能夠通過移動來解決這個問題。分割到腳本的另一個區域。

+0

您可以將自己的答案標記爲其他人的正確答案看看你的問題已經解決:) –

+0

我會:)因爲我是一個堆棧溢出菜鳥它讓我等了幾天:D –

相關問題