Convertir du string en int[] [Résolu]

Smookii 10 Messages postés lundi 18 juin 2012Date d'inscription 29 mars 2013 Dernière intervention - 3 mars 2013 à 23:16 - Dernière réponse : izords 20 Messages postés samedi 27 avril 2002Date d'inscription 4 mars 2013 Dernière intervention
- 4 mars 2013 à 21:20
Bonjour,
alors voila je suis entrain de créer un jeu, et à un moment je fais une fonction qui vas retourner un tableau de string qui sera composer de plusieurs paramètres.
Mais certain de ces paramètre sont eux même des tableau de int, ce qui n'est pas un problème pour les retourner, puisque on peu convertit le int[] en string , mais c'est un problème pour les recevoir parce que je dois reconvertir les valeurs du tableau string en int[], est ce possible ?


Ex :

int[] para01_reçu = new int[2];
int[] para02_reçu = new int[5];
int[] para03_reçu = new int[4];

string[] str_Reçu_des_Param = new string[3];

str_Reçu_des_Param = Fonction();
para01_reçu = Convert.to???(str_Reçu_des_Param[0]);
para02_reçu = Convert.to???(str_Reçu_des_Param[0]);
para03_reçu = Convert.to???(str_Reçu_des_Param[0]);

public string[] Fonction()
{

int[] para01 = new int[2];
int[] para02 = new int[5];
int[] para03 = new int[4];

string[] str_Retour_de_Fonction = new[3];

str_Retour_de_Fonction[0] = Convert.ToString(para01);
str_Retour_de_Fonction[1] = Convert.ToString(para01);
str_Retour_de_Fonction[2] = Convert.ToString(para01);

return str_Retour_de_Fonction;
}


Merci d'avance et bonne soirée.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
izords 20 Messages postés samedi 27 avril 2002Date d'inscription 4 mars 2013 Dernière intervention - 4 mars 2013 à 17:59
3
Merci
Je suis entièrement d'accord avec Whismeril, la meilleur façon de faire ce que tu veux c'est de te faire une classe avec tout ce que tu as besoin. C'est plus clair et plus facile à comprendre par la suite. Sinon si tu tiens vraiment à avoir une liste c'est possible d'avoir une "liste" avec des types différents :

List<Tuple> result = new List<Tuple>();
result.Add(new Tuple(new int[] {1,2}, new int[] {3,4,5}, true, 100, "mystring" ));

Mais va si avec une classe ;)

Merci izords 3

codes-sources a aidé 78 internautes ce mois-ci

Commenter la réponse de izords
Whismeril 11573 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 4 mars 2013 à 09:33
1
Merci
Tout à fait d'accord avec Izords, les list c'est beaucoup plus simple et souple d'emploi que les tableaux.
Mais si tu veux vraiment un tableau de string représentant un tableau de int voilà comment faire:

        private void tuitu()
        {
            int[] int1 = { 1, 2, 3 };
            int[] int2 = { 2, 3, 4 };

            string[] texte = new string[2];

            texte[0] = string.Join(";", ConvertTableauInt(int1));//la methode Join crée un string contenant chaque valeur du tableau séparé par le texte passé en paramètre
            texte[1] = string.Join(";", ConvertTableauInt(int2));


            //ensuite pour récupérer tes valeurs:
            string[] int12 = texte[0].Split(';');//la méthode split fait l'inverse de join, tu te retrouves avec un tableau de string représentant tes int
            string[] int22 = texte[1].Split(';');

            
        }

        /// <summary>
        /// La méthode join prend un string[] en entrée, il faut donc convertir le int[]
        /// </summary>
        /// 


        /// <returns></returns>
        private string[] ConvertTableauInt(int[] entree)
        {
            int l = entree.Length;
            string[] sortie = new string[l];

            for (int i = 0; i < l; i++)
                sortie[i] = entree[i].ToString();

            return sortie;

        }



Whismeril
Commenter la réponse de Whismeril
Whismeril 11573 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 4 mars 2013 à 17:45
1
Merci
Si le but au final est de transmettre diverses info de plusieurs type, pourquoi ne pas te créer une classe avec en propriétés tout ce que tu dois transmettre?



Whismeril
Commenter la réponse de Whismeril
yann_lo_san 1137 Messages postés lundi 17 novembre 2003Date d'inscription 23 janvier 2016 Dernière intervention - 4 mars 2013 à 21:07
1
Merci
Salut,

Oula, vous faites compliqué pour pas grand chose,

un tableau de n'importe quel type est un "Object"
Suffisait de faire un tableau d'Object pour y stocker les tableaux de params.
Plus besoin de convertir quoi que ce soit :
Ex :

// Le tableau global
Object[] _listeParams = new Object[3];

// les tableaux de params locaux
int[] paramsInt = new int[2] { 1, 2 };
string[] paramsStr = new String[1] { "toto" };
bool[] paramsBool = new Boolean[4] { true, false, false, true };

// Stocke les différents tableaux
_listeParams[0] = paramsInt;
_listeParams[1] = paramsStr;
_listeParams[2] = paramsBool;

// recup un des tableaux de params
bool[] mesParametresBool = _listeParams[2] as bool[];


bye...
Commenter la réponse de yann_lo_san
izords 20 Messages postés samedi 27 avril 2002Date d'inscription 4 mars 2013 Dernière intervention - 4 mars 2013 à 02:30
0
Merci
Je ne suis pas certain de comprendre ton besoin réel et pkoi tu dois retourner un array de string. Tu pourrais tout simplement retourner une List

public List Fonction()
{
int[] para01 = new int[2];
int[] para02 = new int[5];
int[] para03 = new int[4];
...
List result = new List() { para01, para02, para03 };
return result;
}
Commenter la réponse de izords
Whismeril 11573 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 4 mars 2013 à 09:36
0
Merci
Ha j'ai oublié, pour avoir au final un tableau de int tu écris une méthode similaire à ConvertTableauInt, qui fonctionne dans l'autre sens.




Whismeril
Commenter la réponse de Whismeril
Whismeril 11573 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 4 mars 2013 à 13:35
0
Merci
Avec LinQ, ça fait moins de ligne de code

        private void tuitu()
        {
            int[] int1 = { 1, 2, 3 };
            int[] int2 = { 2, 3, 4 };

            string[] texte = new string[2];

            texte[0] = Joindre(int1);
            texte[1] = Joindre(int2);

            //ensuite pour récupérer tes valeurs:
            int[] int12 = Spliter(texte[0], ';');
            int[] int22 = Spliter(texte[1], ';');
        }

        private string Joindre(int[] entree)
        {
            return string.Join(";", entree.Select(c => c.ToString()).ToArray());

            //requette LinQ entree.Select(c => c.ToString()).ToArray()
            //entree.Select(c => c.ToString()) retourne une collection correspondant au ToString de chaque élément de entree
            //.ToArray() la collection converti en tableau pour répondre à la signature de la méthode string.Join()
        }

        private int[] Spliter(string texte, char separateur)
        {
            return texte.Split(separateur).Select(c => Convert.ToInt32(c)).ToArray();
        }



Whismeril
Commenter la réponse de Whismeril
Smookii 10 Messages postés lundi 18 juin 2012Date d'inscription 29 mars 2013 Dernière intervention - 4 mars 2013 à 17:34
0
Merci
Alors voilà j'ai essayer avec des Listes mais le problème c'est que je n'ai pas que des paramètres en int[] à retourner , j'ai des paramètre en booléen, en int, en string et en int[].
Dans ce cas à est-ce qu'il est possible de créer une liste avec plusieurs type ?
Commenter la réponse de Smookii
Smookii 10 Messages postés lundi 18 juin 2012Date d'inscription 29 mars 2013 Dernière intervention - 4 mars 2013 à 21:19
0
Merci
Merci beaucoup pour toutes vos réponse je les ai toutes tester et elles marchent toutes, merci encore et bonne soirée.
Commenter la réponse de Smookii
izords 20 Messages postés samedi 27 avril 2002Date d'inscription 4 mars 2013 Dernière intervention - 4 mars 2013 à 21:20
0
Merci
T'as raison pour l'array d'object, c'est la méthode la plus simple, mais travailler avec un array d'object par la suite c'est beaucoup plus chiant qu'avec une classe de params déjà typé. Tu va faire quoi avec ton array d'object par la suite? faire un switch is bool, is int .... pour chaque item. C'est beaucoup plus pratique une classe:

public class ResultParams
{
public List Param01_recu { get; set; }
public List Param02_recu { get; set; }
public List Param03_recu { get; set; }
public bool ParamX { get; set; }
public int ParamY { get; set; }
.....

public ResultParams()
{
para01_recu = new List;
para02_recu = new List;
para03_recu = new List;
}
}
Commenter la réponse de izords

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.