Ajout digits devant chaine pour longueur fixe

Résolu
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
- 24 mars 2010 à 11:33
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
- 24 mars 2010 à 16:12
Bonjour à tous,

Je me permets de solliciter vos compétences car je suis une grosse buse des RegEx.

Voila pour un logiciel développé en .Net j'aimerai à partir d'une courte chaine (numérique normalement) obtenir une chaine de taille fixe sur 7 digits (en ajoutant des 0 devant), et en enlevant au passage les espaces contenus dans celle-ci.

Voila des exemples qui seront plus parlant qu'un long discours :

358 47 -> 0035847
86 9 54 -> 0086954
7 8 9564 -> 0789564

Merci d'avance pour votre aide,



../\_/\..
.( o.o ). ~ ElGuevel ~
..> - <..

7 réponses

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
24 mars 2010 à 13:49
aucun rapport avec les RegExp ici:

String a = "358 47";
String b = String.Format("{0:D8}", Int32.Parse(a.Replace(" ", "")));


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
24 mars 2010 à 15:04
virer les espaces, tu peux, je pense t'en debrouiller
pour la suite, ,tu boucles :

tant que longueur du nombre < 8
on ajoute un 0


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
24 mars 2010 à 15:29
le truc, c'est qu'une expression de remplacement est une chose figée...
pas moyen de la rendre dynamique.

pour sa, une solution, si c'est envisageable rapport a ton cadre de travail, c'est de repasser le traitement avec la chaine de sortie...

les regexp servent a la localisation et l'extraction, pas utiles pour le formatage.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
24 mars 2010 à 15:32
après, peut etre possible de faire simplement :

\d{1} => 0000000$1
\d{2} => 000000$1
\d{3} => 00000$1
...
\d{8} => $1

mais bon, c'est moyen ^^ (et peut etre pas possible encore une fois, dans ton cadre de travail)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
24 mars 2010 à 14:21
Merci Renfield pour ta réponse, mais le probleme est que mon programme va lire un XML qui lui fournit des "Règles" de travail (sous forme de RegEx) ; rien est figé.

Un champ fournis une expression pour la recherche et l'autre pour le remplacement (j'utilise la classe "Regex")

Du coup j'avais surtout besoin d'une expressions regulières pour faire ce job, et je ne sais pas si c'est possible !? :-s

../\_/\..
.( o.o ). ~ ElGuevel ~
..> - <..
0
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
24 mars 2010 à 15:13
Virer les espaces, c'est bon, c'est pas compliqué :-)

Mais boucler sur ma chaine ... possible avec les RegEx ?

Pourtant pour les dates par exemple quand on se retrouve avec quelque chose comme 1/1/2010, il n'y a pas des expressions permettant de les reformatter en 01/01/2010 ?

J'avais cherché de ce coté là mais sans trop de succès ...

Sinon tant pis je me debrouillerai autrement.


../\_/\..
.( o.o ). ~ ElGuevel ~
..> - <..
0
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
24 mars 2010 à 16:12
Bon je vais avisez autrement, comme on dit « un problème = une solution »

En tout cas merci beaucoup pour tes nombreuses réponses, cela m?a quand même été utile ;-)

++

../\_/\..
.( o.o ). ~ ElGuevel ~
..> - <..
0