IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

recherche d'une fonction VC#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Par défaut recherche d'une fonction VC#
    Bonjour,

    Existe-t-il une fonction pour réaliser le point suivant :

    J'ai une chaine zone="123H3I5"; où des lettres peuvent apparaitre ou non à n'importe quel endroit.

    Le but est de convertir toutes les occurences par une valeur attribuée de la façon suivante

    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    1234567891234567891234567891

    en passant la zone à ma la fonction et les deux tableaux, je veux obtenir
    zone ="1238395";

    ex
    zone = fct(zone,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","1234567891234567891234567891")

    Merci de votre aide pour savoir si il existe une fonction de ce type ou une orientation pour réaliser la fonction sans créer une usine à gaz avec des fct existantes de VC#

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    il me semble qu'un "bête" replace pourrait le faire

    Ensuite, il te suffit de fournir une liste ou un dictionnaire avec les équivalences lettre / Chiffre.

    Après, ta fonction peut soit faire un replace, soit prendre lire ta chaine caractère par caractère et créer une nouvelle chaine ayant fait la "traduction".

    Ca me semble assez simple et basique à faire !!!

    (désolé, pas le temps de le coder là, je dois aller faire un concert dans pas longtemps)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Par défaut
    le replace remplace une chaine par une autre alors que là en php j'utilise STRTR

    A développer je pense que cela est simple mais inutile de refaire si une fonction existe car elle sera je le pense moins omptimisée

    merci
    bon concert

  4. #4
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Perso j'utiliserai tout bêtement un List<char>, rempli dans l'ordre alphabétique, du coup tu peux retrouver avec les index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    static List<char> dico = new List<string> 
    (
         new char[] 
              {
                   "A",
                   "B",
                   "C",
                   "D",
                   "E",
                    ...
               }
    );
     
    //pour convertir :
    private static string CustomReplace(string maChaine)
    {
         StringBuilder sb = new StringBuilder();
     
         foreach (char c in maChaine)
         {
               sb.Append(dico.Contains(c) ? (dico.IndexOf(c) + 1).ToString() : c.ToString());
         }
     
         return sb.ToString();
    }
    Si les performances sont critiques pour ton appli (ou que cette fonction est appelée très souvent), je ferais plutôt un truc plus dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    private static string ConvertChaine(string maChaine)
    {
         StringBuilder sb = new StringBuilder();
     
         foreach (char c in maChaine)
         {
              switch (c)
              {
                    case 'A' : 
                             sb.Append("1");
                             break;
     
                    case 'B' : 
                             sb.Append("2");
                             break;
     
                    case 'C' : 
                             sb.Append("3");
                             break;
                    case etc....
     
                    default : sb.Append(c.ToString());
              }
     
              return sb.ToString();
         }
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Par défaut
    Voici la fonction que j'ai mise en place, je ne connais pas encore assez VC# pour savoir comment l'optimiser mais elle a le mérite de fonctionner.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
           private string convert_a_to_i(string zone,string chaine_depart, string chaine_fin)
            {
     
                string chaine = "";
     
                foreach (char c in zone)
                {
                    int i = 0;
                    string car = "";
                    i = chaine_depart.IndexOf(c, 0, chaine_depart.Length);
                    if (i != -1)
                    {
                        car = chaine_fin.Substring(i, 1);
                        chaine += car;
                    }
                    else
                        chaine += c;
                }
                return (chaine);
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. A la recherche d'une fonction du genre time_sub
    Par fayred dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 24/08/2007, 12h10
  2. Recherche d'une fonction
    Par Dub's dans le forum C
    Réponses: 12
    Dernier message: 08/03/2007, 09h05
  3. Recherche d'une fonction guillemets
    Par too_Slow_ dans le forum Flash
    Réponses: 3
    Dernier message: 02/03/2007, 11h30
  4. [C] recherche d'une fonction
    Par Alice9 dans le forum MFC
    Réponses: 4
    Dernier message: 06/04/2006, 09h19
  5. Réponses: 17
    Dernier message: 14/02/2006, 00h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo