Ajouter des caractères dans une string [Résolu]

Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Dernière intervention
12 avril 2013
- - Dernière réponse : Jojo092
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Dernière intervention
12 avril 2013
- 25 mai 2010 à 11:35
Bonjour, j'ai un petit souci au niveau de mes algorithmes... J'ai en fait des numéros de séries pour une bibliothèque sous différents type, du genre MVHD0472, MVHANEL33, MVHPE0091(18), etc, etc...

Bref, mon souci vient du fait que pour tous ces numéros de série, je dois les formater d'une certaine manière qui est que la partie numérique doit être sur 5 caractères en ajoutant des zéros si nécessaire.

Par exemple :

[b]MVHD0472 => MVHD00472
MVHANEL33 => MVHANEL00033/b
etc, etc...

Donc, est-ce que quelqu'un aurait une idée pour m'aider à résoudre ce problème, sachant que grâce au Regex, j'ai identifié 2 type de numéros de série :
- les numéros de série qui se terminent par une série de chiffre
- les numéros de série qui ont quelque chose après la série de chiffre qu'il faut garder.

En tout cas, merci d'avance à ceux qui pourront m'aider ou qui me liront.

Bonne journée à tous.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Dernière intervention
12 avril 2013
3
Merci
Bonjour,

entre temps, j'ai trouvé une solution pour mon problème, qui je pense fonctionnera pour tous les cas possible. (c'est en cours de test...)

En gros, je fais une première boucle pour trouver la position du 1er chiffre, ensuite je copie dans une variable intermédiaire toute la suite de chiffres et je la supprime de ma chaine de caractère initiale. Je formate ensuite ma chaine intermédiaire sur 5 caractères et je la réinsère dans la chaine de caractère initiale à la position que j'ai trouvé.

Voici le code des fois que ca puisse aider :
Regex regex1 = new Regex("[a-zA-Z]{1,}[0-9]{1,4}");
Regex regex3 = new Regex("[0-9]{1,}");
StringBuilder stringBuilder = new StringBuilder();
if (regex1.IsMatch(value) || regex3.IsMatch(value))
{
    foreach (char c in value)
    {
        if (char.IsNumber(c))
        {
            position = value.IndexOf(c);
            break;
        }
     }

     foreach (char c in value)
     {
         if (char.IsNumber(c))
         {
             valueNum += c;
         }
      }
      value = value.Replace(valueNum, string.Empty);
      valueNum = int.Parse(valueNum).ToString("00000");
      value = value.Insert(position, valueNum);
      stringBuilder.Insert(0, value);


En tout cas, merci à tous ceux qui m'ont apporter leur aide et bonne journée!!!!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Jojo092
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Dernière intervention
28 novembre 2012
0
Merci
Salut. Essai ceci. En admettant que chaque numéro de série doit se terminer par 5 chiffres. Je te conseil de faire une boucle en commençant par la fin de tes numéros de série. Tant que tu parcours des chiffres au bout de cinq fois alors pas de soucis. Mais si au bout des cinq boucles il n'a pas eu que des chiffres, alors cela veut dire que tu a des caractères vers la fin de ton numéro de série. Tu récupères les élément parcourus, tu supprimes les lettres non désirées et tu refait une concatenation avec le reste de ta chaîne. Merci.

Only the strong survive !
Commenter la réponse de imothepe_33
Messages postés
137
Date d'inscription
samedi 24 septembre 2005
Dernière intervention
12 avril 2013
0
Merci
Ouais, sauf que justement je n'ai pas que des numéros de série se terminant par 5 chiffres... Sachant que j'ai 2700 numéros de série, je n'ai donnée que quelques exemples.... J'ai aussi des numéros de série qui sont sous le format MVH82...
Commenter la réponse de Jojo092
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Dernière intervention
13 août 2011
0
Merci
salut

essais un truc comme ca


            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("^(?<lettre>[A-Z]*)(?<num>[0-9]*)");

            if(reg.IsMatch("MVHANEL33"))
            {
                System.Text.RegularExpressions.Match match = reg.Match("MVHANEL33");
                string lettre = match.Groups["lettre"].Value;
                string num = match.Groups["num"].Value;

                string ReformeText = String.Format("{0}{1:0000000000}", lettre, int.Parse(num));
            }


ReformeText aura la valeur MVHANEL0000000033
Commenter la réponse de yohan49

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.