Ajout digits devant chaine pour longueur fixe [Résolu]

Signaler
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
-
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
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
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
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 ~
..> - <..
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
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 ~
..> - <..
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
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 ~
..> - <..