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

Résolu/Fermé
stephane - 21 août 2006 à 00:26
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 22 août 2006 à 15:01
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
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
21 août 2006 à 06:47
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
Ca marche au poil ! Merci beaucoup !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
22 août 2006 à 00:00
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
22 août 2006 à 15:01
petite corréction

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