[perl] insérer des caractères dans une chaine

Résolu
stephane -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

J'essaie d'insérer des caractères dans une chaînes, en Perl. Ma chaine est par exemple :

12/1999-09/2002

et j'aimerais que cela me donne :

12/1999 à 09/2002

J'ai essayé avec tr mais je n'ai pu que remplacer le '-' par 'à' pour avoir
12/1999à09/2002.

merci

3 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

perl -e '$v = 12/1999-09/2002; ($t = $v) =~ s/(?<=)-(?=\d)/ à /g;print $t,"\n";'
ou sans le test avant et test arrière
perl -e '$v = 12/1999-09/2002; ($t = $v) =~ s/(\d)-(\d)/$1 à $2/g;print $t,"\n";'
lami20j

P.S. Le teste avant et le test arrière nous permet de regarder avant et arrière pour s'assurer qu'on a une chiffre, mais on ne capture rien.

Ce n'est pas très important dans ce cas, mais en cas de plusieurs données l'efficacité peut augmenté.
0
stephane
 
Ca marche au poil ! Merci beaucoup !
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

De rien.

lami20j

P.S. En général quand tu traites de chaînes de caractères en Perl pense aux expressions régulières (regex).
Ca ne veut pas dire que les regex sont la seule solution. Il y en a beaucoup d'autres ;)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
petite corréction

Au lie de
$v = 12/1999-09/2002
à écrire
$v = "12/1999-09/2002"
lami20j
0