- Home /
Splitting text into 2D array
This is probably something super simple but I have spent too much time trying to get it to store correctly.
Basically I have PHP script that returns rows from an SQL database. The format for the data is like so;
"world server 1|127.0.0.1|7544@world server 2|127.0.0.1|7545@"
What I want to do is split the string into an array so that I can call for, say, the port of the first worldserver. For example worlds[0][2] would return 7544.
What I have tried so far is not working;
private string[][] worldData;
private string phpfileURL = phpLocation + "worldSelect.php";
public void fillWorldList()
{
worldList.options.Clear();
StartCoroutine(getWorlds());
}
private IEnumerator getWorlds()
{
WWW worlds = new WWW(phpfileURL);
yield return worlds;
parseWorldData(worlds.text);
}
private void parseWorldData(string worldsdata)
{
string[] lines = worldsdata.Split('@');
string[] values = worldsdata.Split('|');
worldData = new string[lines.Length][3];
for (int i = 0; i < lines.Length; i++)
{
for (int j = 0; j < values.Length; j++)
{
worldData[i][j] = values[j];
Debug.Log(worldData[i][j].ToString());
}
}
}
It throws an error:
NullReferenceException: Object reference not set to an instance of an object
(wrapper stelemref) object:stelemref (object,intptr,object)
WorldSelect.parseWorldData (System.String worldsdata) (at Assets/Scripts/SQL/WorldSelect.cs:41)
WorldSelect+<getWorlds>c__Iterator0.MoveNext () (at Assets/Scripts/SQL/WorldSelect.cs:26)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
It's probably something really simple but I just can't figure it out and can't seem to find examples of something similar being done. Thanks in advance.
Answer by Hellium · Nov 18, 2017 at 02:48 PM
private void parseWorldData(string worldsdata)
{
string[] worlds = worldsdata.Split(new char[]{'@'}, StringSplitOptions.RemoveEmptyEntries);
worldData = new string[worlds.Length][];
for( int i = 0 ; i < worlds.Length ; ++ i)
{
worldData[i] = worlds[i].Split( new char[]{'|'}, StringSplitOptions.RemoveEmptyEntries ) ;
for( int j = 0 ; j < worldData.Length ; ++ j)
{
Debug.Log( worldData[i][j] ) ;
}
}
}
I actually just figured this out now and was co$$anonymous$$g to post a reply but you beat me to it. Thanks!
Your answer
Follow this Question
Related Questions
how to assign string value of an array into gameobject text? 2 Answers
How to split a string into array? 2 Answers
Javascript 2D arrays: null values and slicing 1 Answer
Splitting Text 2 Answers
Array Within Index 1 Answer