String => separateur => mise en forme

String => separateur => mise en forme - C#/.NET managed - Programmation

Marsh Posté le 18-05-2006 à 20:46:08    

Bonjour
J'ai ubn string qui conteient les informations de cette forme:
VE451EF4:Nom:Prenom:A450:0122558811:Admin
et j'aimerai avoir dans chaque variable :
 
id=VE451EF4
nom=Nom
Prenom=Prenom
Bureau=A450
tel=0122558811
type=Admin
 
pour pouvoir l'intergré dans un constructeur: CUtilisateur(id,nom....);
mais je ne vois vraiment pas avec quelle commande effectuer cette mise en forme

Reply

Marsh Posté le 18-05-2006 à 20:46:08   

Reply

Marsh Posté le 18-05-2006 à 21:22:40    

string txt_arg = "" ;
            ArrayList arguments = new ArrayList();
            foreach (char c in login.ToCharArray())
            {
                if (c.CompareTo(':') == 0)
                {
                    arguments.Add(txt_arg);
                    txt_arg = "";
                }
 
                else
                    txt_arg += c;
            }

Reply

Marsh Posté le 18-05-2006 à 22:27:18    

ta chaine.Split(':') te donnera un tableau de string

Reply

Marsh Posté le 22-05-2006 à 10:01:55    

Perso, j'utiliserais une struct avec méthode, puisque ça existe en .NET, autant en profiter !
 
Code en .NET 2.0 :
 

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace test
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Console.WriteLine("Saisissez, un utilisateur (format d'initialisation) :" );
  11.             string init = Console.ReadLine();
  12.             Personne User = new Personne();
  13.             try
  14.             {
  15.                 User.Fill(init);
  16.                 Console.WriteLine("User créé :" );
  17.                 Console.WriteLine(string.Format("ID     : {0}", User.ID));
  18.                 Console.WriteLine(string.Format("Nom    : {0}", User.Nom));
  19.                 Console.WriteLine(string.Format("Prénom : {0}", User.Prenom));
  20.                 Console.WriteLine(string.Format("Bureau : {0}", User.Bureau));
  21.                 Console.WriteLine(string.Format("Tél    : {0}", User.Tel));
  22.                 Console.WriteLine(string.Format("Type   : {0}", User.Type));
  23.             }
  24.             catch (Exception e)
  25.             {
  26.                 Console.WriteLine(e.Message);
  27.             }
  28.             finally
  29.             {
  30.                 Console.WriteLine();
  31.                 Console.WriteLine("Appuyez sur une touche pour quitter" );
  32.                 Console.Read();
  33.             }
  34.         }
  35.     }
  36.     struct Personne
  37.     {
  38.         public string ID;
  39.         public string Nom;
  40.         public string Prenom;
  41.         public string Bureau;
  42.         public string Tel;
  43.         public string Type;
  44.         public void Fill(string Initialisateur)
  45.         {
  46.             string[] tmpTab = Initialisateur.Split(':');
  47.             if (tmpTab.Length != 6)
  48.             {
  49.                 throw new Exception(string.Format("Erreur d'initialisation : 6 paramètres attendus, {0} trouvé(s).", tmpTab.Length.ToString()));
  50.             }
  51.             this.ID = tmpTab[0];
  52.             this.Nom = tmpTab[1];
  53.             this.Prenom = tmpTab[2];
  54.             this.Bureau = tmpTab[3];
  55.             this.Tel = tmpTab[4];
  56.             this.Type = tmpTab[5];
  57.         }
  58.     }
  59. }


 
Sortie :
 


Saisissez, un utilisateur (format d'initialisation) :
Identifiant:Nom du user:Prénom du user:Bureau du user:Téléphone:Type de user
User créé :
ID     : Identifiant
Nom    : Nom du user
Prénom : Prénom du user
Bureau : Bureau du user
Tél    : Téléphone
Type   : Type de user
 
Appuyez sur une touche pour quitter
 
 
Saisissez, un utilisateur (format d'initialisation) :
blabla
Erreur d'initialisation : 6 paramètres attendus, 1 trouvé(s).
 
Appuyez sur une touche pour quitter

Reply

Marsh Posté le 22-05-2006 à 11:15:36    

Arjuna a écrit :


Code :
  1. Console.WriteLine(string.Format("ID     : {0}", User.ID));
  2.                 Console.WriteLine(string.Format("Nom    : {0}", User.Nom));
  3.                 Console.WriteLine(string.Format("Prénom : {0}", User.Prenom));
  4.                 Console.WriteLine(string.Format("Bureau : {0}", User.Bureau));
  5.                 Console.WriteLine(string.Format("Tél    : {0}", User.Tel));
  6.                 Console.WriteLine(string.Format("Type   : {0}", User.Type));
  7. [...]
  8.                 string[] tmpTab = Initialisateur.Split(':');
  9.                 throw new Exception(string.Format("Erreur d'initialisation : 6 paramètres attendus, {0} trouvé(s).", tmpTab.Length.ToString()));




 
http://membres.lycos.fr/pikti92/_img/_gif/capello.gif
juste pour info la méthode Console.WriteLine gère déjà le formatage, inutile d'appeler string.Format tu peux mettre  
"(ta chaine, params[] obj)" ;  
de plus string.Format attendant des objets le "ToString()" de "tmpTab.Length" ne sert donc à rien.
 
Bien sûr cela ne change rien à la solution proposée ;)
(qui utilise bien la méthode Split())


Message édité par pikti le 22-05-2006 à 11:18:18
Reply

Marsh Posté le 22-05-2006 à 11:25:27    

Ha, tiens, c'est vrai, j'oublie tout le temps que WriteLine supporte déjà le formattage :D
 
Sinon, le "ToString()" sur le Length, je le met pour la sémantique. Je doute que le compilo en fasse cas, et l'intérêt, c'est que quand on lit le code, on n'a pas besoin de consulter la déclaration de String.Format() ou Console.WriteLine() pour savoir ce qu'on fait.
Après tout, une valeur numérique pourrait indiquer le nombre de caractères à écrire...

Reply

Marsh Posté le 25-05-2006 à 15:00:26    

korben31 a écrit :

Bonjour
J'ai ubn string qui conteient les informations de cette forme:
VE451EF4:Nom:Prenom:A450:0122558811:Admin
et j'aimerai avoir dans chaque variable :
 
id=VE451EF4
nom=Nom
Prenom=Prenom
Bureau=A450
tel=0122558811
type=Admin
 
pour pouvoir l'intergré dans un constructeur: CUtilisateur(id,nom....);
mais je ne vois vraiment pas avec quelle commande effectuer cette mise en forme


 
Si "VE451EF4:Nom:Prenom:A450:0122558811:Admin" est un string qui s'appelle "Truc", tu peux peut-être essayer de faire : CUtilisateur(Truc.Substring(0,8),Truc.Substring(8,3), etc);
 
(si j'ai bien compris ce que tu voulais faire!)

Reply

Marsh Posté le 26-05-2006 à 12:19:12    

ouais, nan, mais ça c'est vraimment pourrave par contre.

Reply

Marsh Posté le 30-05-2006 à 10:11:30    

Frolor a écrit :

Si "VE451EF4:Nom:Prenom:A450:0122558811:Admin" est un string qui s'appelle "Truc", tu peux peut-être essayer de faire : CUtilisateur(Truc.Substring(0,8),Truc.Substring(8,3), etc);
 
(si j'ai bien compris ce que tu voulais faire!)


 
non c'est pas du tout une bonne solution. La solution proposée par Arjuna est nettement meilleure.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed