Question by
Hylders · Aug 16, 2017 at 12:24 PM ·
stringintconvertdictionary
Don't know how to convert a string value to add into a int dictionnary.
After spliting a string input into multiple string values, I would like to store they as int values in a dictionary. I think my code is pretty much ok, except the fact that I don't know how to convert thoses splited values before adding these.
Here is my script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class loadArena : MonoBehaviour {
public string rawMap;
string inputMap;
public Dictionary<int, int> map = new Dictionary<int, int> ();
void Start () {
rawMap = null;
}
void OnGUI () {
if (rawMap == null) {
inputMap = GUI.TextField (new Rect (Screen.width / 2 - 60, Screen.height / 2 - 20, 120, 30), inputMap);
if (GUI.Button (new Rect (Screen.width / 2 - 60, Screen.height / 2 + 20, 120, 30), "Load map")) {
rawMap = inputMap;
ReadMap ();
}
}
}
void ReadMap () {
foreach (string argument in rawMap.Split (';')) {
var pair = argument.Split (':');
map[pair[0]] = pair[1];
}
foreach (string key in map.Keys) {
Debug.Log (string.Format ("{0} = {1}", key, map[key]));
}
}
}
Comment
Best Answer
Answer by haruna9x · Aug 16, 2017 at 04:21 PM
You have a dictionary with a key and a value of type int, but then you use it as a string.
using System;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public string rawMap;
string inputMap;
public Dictionary<int, int> map = new Dictionary<int, int>();
void Start()
{
rawMap = null;
}
void OnGUI()
{
if (rawMap == null)
{
inputMap = GUI.TextField(new Rect(Screen.width / 2 - 60, Screen.height / 2 - 20, 120, 30), inputMap);
if (GUI.Button(new Rect(Screen.width / 2 - 60, Screen.height / 2 + 20, 120, 30), "Load map"))
{
rawMap = inputMap;
ReadMap();
}
}
}
void ReadMap()
{
foreach (string argument in rawMap.Split(';'))
{
var pair = argument.Split(':');
map[Int32.Parse(pair[0])] = Int32.Parse(pair[1]);
}
foreach (int key in map.Keys)
{
Debug.Log(string.Format("{0} = {1}", key, map[key]));
}
}
}
Thanks! It works; I just had to type "System.Int32.Parse()" ins$$anonymous$$d of "Int32.Parse()" and now everything is fine.