Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013
-
21 mai 2010 à 11:18
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 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.
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.
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 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!!!!
imothepe_33
Messages postés168Date d'inscriptionmardi 27 juillet 2004StatutMembreDernière intervention28 novembre 20127 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.
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 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...