2016-12-15 5 views
0

Guten Morgen Stack Mind!Wenn ich .Split zum Auffüllen eines String-Arrays verwende, bekomme ich nur einen Eintrag. Ich brauche zwei

Ich arbeite mit C# in Unity3d.

Ich ziehe eine Zeichenfolge aus dem USGS rss Atom Feed, der die Lat/Lon-Koordinaten enthält, die ich brauche. Sobald ich die Zeichenfolge habe, breche ich sie am "" und gebe beide Einträge mit string.Split in ein Array ein. Früh am Skript, erkläre ich das Array und fülle es in etwa so:

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

ich bestätigt habe, dass dies nur funktioniert gut, ich diese Einträge wie erwartet abrufen kann.

Sobald ich jedoch die Zeichenfolge aus meinem Feed ziehen und es aufteilen, erhalte ich eine IndexOutOfRangeException: Array-Index ist außerhalb des Bereichs. Fehler, wenn ich versuche, die neuen Strings aus dem Array zu ziehen, um sie in Floats zu konvertieren.

Die Zeichenfolge ich aus dem Speise bin ziehen wie folgt aussieht:

33,2903333 -115,695

Der Code, den ich diese Zeichenfolge in zwei Teile aufzuspalten bin mit und es verwenden, um das Array zu füllen, ist dies:

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]); 

der zweite debug.log (shakeup.Length) gibt eine 1. die dritte debug.log ist, wo ich versuche, den zweiten Eintrag in dem Array zurück zu lesen, und das ist, wo ich die Fehlermeldung.

Jede Hilfe oder Vorschläge sind willkommen. Ich habe sowohl in StackOverflow als auch in den UnityAnswers Foren gegoogelt und durchsucht, konnte aber dieses Problem nicht entwirren.

Ich habe erwogen, eine Liste zu verwenden, aber da das Array nur zwei Koordinaten hat, schien dies eine einfachere Lösung mit etwas weniger Overhead zu sein (bis ich 12 Stunden damit verbracht habe, natürlich zu debuggen).

EDIT: Es kann ein Problem mit der Zeichenfolge, die ich bekomme. Es geht ganz gut als String durch, ich kann es auf die Konsole drucken, Unity behandelt es wie jede andere Zeichenkette. Ich ziehe es von hier:

https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom 34,2495 -118,5568333

Zweiter Punkt: Der erste Teil der Zeichenfolge geht in das Array nur in Ordnung. Wenn ich den Eintrag "shakeup [0]" anrufe, bekomme ich "34.2495" wie erwartet. Es ist der zweite Teil der Schnur, die gegessen wird.

+3

"* shakeup.Length gibt eine 1 *" Quelle zurück, weil es nur ein Element gibt, nicht dass '1' der höchste Index des Arrays ist. Es besteht die Möglichkeit, dass Sie eine Zeichenfolge ohne Leerzeichen aufteilen –

+0

Was erhalten Sie, wenn Sie 'Debug.Log (Message.IndexOf (" "));'? – juharr

+0

Zero-based index;) – Johnny

Antwort

0

Danke an alle, die mir beim Debuggen geholfen haben!

Wie sich herausstellte, wurde die Nachrichtenzeichenfolge in einem anderen Skript aktualisiert. Dieses Update beeinträchtigte die Ausführung von .Split. Ich konnte das lösen, indem ich .Split in einen anderen Bereich des Skripts bewegte.

+0

Sie können Ihre eigene Antwort als die richtige Antwort für andere markieren um zu sehen, dass dein Problem gelöst wurde :) –

+0

Ich werde :) Weil ich ein Stack Overflow Rookie bin, macht es mich ein paar Tage warten: D –

Verwandte Themen