Ajouter des caractères dans une string

Résolu
Jojo092 Messages postés 136 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013 - 21 mai 2010 à 11:18
Jojo092 Messages postés 136 Date d'inscription samedi 24 septembre 2005 Statut Membre 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.
A voir également:

4 réponses

Jojo092 Messages postés 136 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013
25 mai 2010 à 11:35
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!!!!
3
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
21 mai 2010 à 12:13
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 !
0
Jojo092 Messages postés 136 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013
21 mai 2010 à 12:29
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...
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
21 mai 2010 à 13:17
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
0
Rejoignez-nous