[perl] insérer des caractères dans une chaine [Résolu/Fermé]

Signaler
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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é.
Ca marche au poil ! Merci beaucoup !
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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 ;)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
petite corréction

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