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

elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 24 mars 2010 à 11:33 - Dernière réponse : elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention
- 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 ~
..> - <..
Afficher la suite 

7 réponses

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 mars 2010 à 13:49
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 mars 2010 à 15:04
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 mars 2010 à 15:29
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 mars 2010 à 15:32
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 24 mars 2010 à 14:21
0
Utile
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 ~
..> - <..
Commenter la réponse de elguevel
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 24 mars 2010 à 15:13
0
Utile
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 ~
..> - <..
Commenter la réponse de elguevel
elguevel 735 Messages postés jeudi 19 décembre 2002Date d'inscription 22 novembre 2016 Dernière intervention - 24 mars 2010 à 16:12
0
Utile
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 ~
..> - <..
Commenter la réponse de elguevel

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.