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

Résolu
stephane -  
lami20j Messages postés 21506 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

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  2. stephane
     
    Ca marche au poil ! Merci beaucoup !
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      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
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    petite corréction

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