« Programmation Perl/Chaînes de caractères » : différence entre les versions
Contenu supprimé Contenu ajouté
m →Fonctions de manipulation des chaînes : quelque soit->quel que soit |
m <source> -> <syntaxhighlight> (phab:T237267) |
||
Ligne 13 : | Ligne 13 : | ||
;''substr'' : Extrait une sous-chaîne. |
;''substr'' : Extrait une sous-chaîne. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl |
#!/usr/bin/perl |
||
use strict; |
use strict; |
||
Ligne 86 : | Ligne 86 : | ||
substr($chaine,length $chaine,0)="_SUFF"; |
substr($chaine,length $chaine,0)="_SUFF"; |
||
print $chaine."\n"; # babebibobu_SUFF |
print $chaine."\n"; # babebibobu_SUFF |
||
</syntaxhighlight> |
|||
</source> |
|||
;''length'' : Calcule la longueur d'une chaîne. |
;''length'' : Calcule la longueur d'une chaîne. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
# -w = "use warnings;" |
# -w = "use warnings;" |
||
Ligne 114 : | Ligne 114 : | ||
print length "devant".substr($chaine,-7,-1)x 3 ."derrière\n".sprintf ("%.5f",6/7) ; # 41 dont devant = 6 ; eBIboB x 3 = 18 ; derrière\n = 10 (è = 2) ; 0.85714 = 7 caractères |
print length "devant".substr($chaine,-7,-1)x 3 ."derrière\n".sprintf ("%.5f",6/7) ; # 41 dont devant = 6 ; eBIboB x 3 = 18 ; derrière\n = 10 (è = 2) ; 0.85714 = 7 caractères |
||
print "\n"; |
print "\n"; |
||
</syntaxhighlight> |
|||
</source> |
|||
;''lc'' : Transforme une chaîne en minuscules. |
;''lc'' : Transforme une chaîne en minuscules. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
# -w = "use warnings;" |
# -w = "use warnings;" |
||
Ligne 127 : | Ligne 127 : | ||
my $chaine2="fichier.TXT"; |
my $chaine2="fichier.TXT"; |
||
print ucfirst substr( $chaine2,0,-4). lc substr( $chaine2,-4,4)."\n" ;# Fichier.txt |
print ucfirst substr( $chaine2,0,-4). lc substr( $chaine2,-4,4)."\n" ;# Fichier.txt |
||
</syntaxhighlight> |
|||
</source> |
|||
;''uc'' : Transforme une chaîne en majuscules. |
;''uc'' : Transforme une chaîne en majuscules. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
# -w = "use warnings;" |
# -w = "use warnings;" |
||
Ligne 136 : | Ligne 136 : | ||
my $chaine="BaBeBiBOBU"; |
my $chaine="BaBeBiBOBU"; |
||
print uc $chaine."\n"; # BABEBIBOBU |
print uc $chaine."\n"; # BABEBIBOBU |
||
</syntaxhighlight> |
|||
</source> |
|||
;''lcfirst'' : Transforme le premier caractère d'une chaîne en minuscule. |
;''lcfirst'' : Transforme le premier caractère d'une chaîne en minuscule. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
# -w = "use warnings;" |
# -w = "use warnings;" |
||
Ligne 146 : | Ligne 146 : | ||
my $chaine2="Cornélien"; |
my $chaine2="Cornélien"; |
||
print lcfirst $chaine2."\n"; # cornélien |
print lcfirst $chaine2."\n"; # cornélien |
||
</syntaxhighlight> |
|||
</source> |
|||
;''ucfirst'' : Transforme le premier caractère d'une chaîne en majuscule. |
;''ucfirst'' : Transforme le premier caractère d'une chaîne en majuscule. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
# -w = "use warnings;" |
# -w = "use warnings;" |
||
Ligne 159 : | Ligne 159 : | ||
my $chaine2="corneille, (auteur du cid.)"; |
my $chaine2="corneille, (auteur du cid.)"; |
||
print ucfirst substr( $chaine2,0,-5). ucfirst substr( $chaine2,-5,5)."\n" ; # Corneille, (auteur du Cid.) |
print ucfirst substr( $chaine2,0,-5). ucfirst substr( $chaine2,-5,5)."\n" ; # Corneille, (auteur du Cid.) |
||
</syntaxhighlight> |
|||
</source> |
|||
;''chop'' : Supprime le dernier caractère d'une chaîne. |
;''chop'' : Supprime le dernier caractère d'une chaîne. |
||
Il est utilisé surtout pour effacer les \n ("entrées" ou Carriage Return). |
Il est utilisé surtout pour effacer les \n ("entrées" ou Carriage Return). |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
use strict; |
use strict; |
||
Ligne 185 : | Ligne 185 : | ||
print @tableau2;# vacheveau |
print @tableau2;# vacheveau |
||
print "\n"; |
print "\n"; |
||
</syntaxhighlight> |
|||
</source> |
|||
;''chomp'' : Permet de supprimer plusieurs caractères à la fin d'un chaîne. |
;''chomp'' : Permet de supprimer plusieurs caractères à la fin d'un chaîne. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
use strict; |
use strict; |
||
Ligne 213 : | Ligne 213 : | ||
close(Descr1); |
close(Descr1); |
||
print "\n"; |
print "\n"; |
||
</syntaxhighlight> |
|||
</source> |
|||
;''reverse'' : Inverse l'ordre des caractères d'une chaîne. |
;''reverse'' : Inverse l'ordre des caractères d'une chaîne. |
||
< |
<syntaxhighlight lang="perl"> |
||
#!/usr/bin/perl -w |
#!/usr/bin/perl -w |
||
use strict; |
use strict; |
||
Ligne 228 : | Ligne 228 : | ||
my $envers= reverse $tableau[2]; |
my $envers= reverse $tableau[2]; |
||
print $envers;# emeisiort |
print $envers;# emeisiort |
||
</syntaxhighlight> |
|||
</source> |
Version actuelle du 16 avril 2020 à 08:41
Le langage Perl permet de gérer les chaînes de caractères.
Comme il s'agit d'une langage ancien, il a d'abord été conçu pour gérer les anciens codages de textes (ASCII, iso-8859-x, etc.).
Le langage Perl s'adapte tout de même à son époque, et il est en particulier possible de traiter des textes Unicode. Si vous ne connaissez pas Unicode, vous pouvez le découvrir avec le livre À la découverte d'Unicode.
Des pages de manuels de Perl sont dédiées à l'Unicode, comme perlunicode ou perluniintro.
Fonctions de manipulation des chaînes[modifier | modifier le wikicode]
- substr
- Extrait une sous-chaîne.
#!/usr/bin/perl
use strict;
use warnings;
my $chaine="babebibobu";
# extraction
print substr($chaine,4,2)."\n"; # bi
# extraction du 5e à l'antépénultième
$chaine="babebibobu";
print substr($chaine,4,-2)."\n"; # bibo
# comptage depuis la fin
$chaine="babebibobu";
print substr($chaine,-7,2)."\n"; # eb
#
# jusqu‘à l'avant-dernier
$chaine="babebibobu";
print substr($chaine,-7,-1)."\n"; # ebibob
# remplacement de 4 caractères par XX
$chaine="babebibobu";
substr($chaine,2,4,"XX");
print $chaine."\n"; # baXXbobu
# gommage = remplacement vide
$chaine="babebibobu";
substr($chaine,2,2,"");
print $chaine."\n"; # babibobu
# incrustation = remplacement sur une longueur de zéro
$chaine="babebibobu";
substr($chaine,4,0,"YY");
print $chaine."\n"; # babeYYbibobu
# préfixage
$chaine="babebibobu";
substr($chaine,0,0,"PREF_");
print $chaine."\n"; # PREF_babebibobu
# suffixage
$chaine="babebibobu";
substr($chaine,length $chaine,0,"_SUFF");
print $chaine."\n"; # babebibobu_SUFF
###########################
# autre syntaxe
# remplacement
$chaine="babebibobu";
substr($chaine,2,3)="XX";
print $chaine."\n"; # baXXibobu
# incrustation
$chaine="babebibobu";
substr($chaine,6,0)="YY";
print $chaine."\n"; # babebiYYbobu
# gommage
$chaine="babebibobu";
substr($chaine,2,6)="";
print $chaine."\n"; # babu
# préfixage
$chaine="babebibobu";
substr($chaine,0,0)="PREF_";
print $chaine."\n"; # PREF_babebibobu
# suffixage
$chaine="babebibobu";
substr($chaine,length $chaine,0)="_SUFF";
print $chaine."\n"; # babebibobu_SUFF
- length
- Calcule la longueur d'une chaîne.
#!/usr/bin/perl -w
# -w = "use warnings;"
use strict;
my $chaine="babebibobu";
print length $chaine; # 10
print "\n";
# lettres accentuées du français = 2 octets
my $chaine2="àâéèêëîïôùûçœæ";
print length $chaine2; # 28
print "\n";
# caractères spéciaux
print length "\t"; # 1 = UNE tabulation
print "\n";
print length "\\\n"; # 2 = une \ littéralement + un retour de chariot
print "\n";
# accepte toute chaîne quel que soit l‘emberlificotage de fonctions qui la crèe.
print length "devant".substr($chaine,-7,-1)x 3 ."derrière\n".sprintf ("%.5f",6/7) ; # 41 dont devant = 6 ; eBIboB x 3 = 18 ; derrière\n = 10 (è = 2) ; 0.85714 = 7 caractères
print "\n";
- lc
- Transforme une chaîne en minuscules.
#!/usr/bin/perl -w
# -w = "use warnings;"
use strict;
my $chaine="BaBeBiBOBU";
print lc "$chaine.\n"; # babebibobu
my $chaine2="fichier.TXT";
print ucfirst substr( $chaine2,0,-4). lc substr( $chaine2,-4,4)."\n" ;# Fichier.txt
- uc
- Transforme une chaîne en majuscules.
#!/usr/bin/perl -w
# -w = "use warnings;"
use strict;
my $chaine="BaBeBiBOBU";
print uc $chaine."\n"; # BABEBIBOBU
- lcfirst
- Transforme le premier caractère d'une chaîne en minuscule.
#!/usr/bin/perl -w
# -w = "use warnings;"
use strict;
my $chaine2="Cornélien";
print lcfirst $chaine2."\n"; # cornélien
- ucfirst
- Transforme le premier caractère d'une chaîne en majuscule.
#!/usr/bin/perl -w
# -w = "use warnings;"
use strict;
my $chaine="corneille";
print ucfirst $chaine."\n"; # Corneille
my $chaine2="corneille, (auteur du cid.)";
print ucfirst substr( $chaine2,0,-5). ucfirst substr( $chaine2,-5,5)."\n" ; # Corneille, (auteur du Cid.)
- chop
- Supprime le dernier caractère d'une chaîne.
Il est utilisé surtout pour effacer les \n ("entrées" ou Carriage Return).
#!/usr/bin/perl -w
use strict;
# chop efface le dernier caractère de chaque item d'un liste
my @tableau = ( "a\n" , "b\n", "c\n" );
print @tableau; # a b c sur 3 lignes distinctes
chop @tableau;
print @tableau; # abc accolés : les \n ont disparu
print "\n";
# chop renvoie son dernier effacement
my @tableau2 = ( "vaches" , "veaux" );
print chop @tableau2;# le x de "veaux"
print "\n";
print @tableau2;# vacheveau
print "\n";
- chomp
- Permet de supprimer plusieurs caractères à la fin d'un chaîne.
#!/usr/bin/perl -w
use strict;
# création d‘un fichier cobaye de 3 lignes
# Descripteur de fichier = File Handle
open ( Descr0,'>','./cobaye') or die ("écriture impossible $!");
print Descr0 "premier\ndeuxieme\ntroisieme\n";
close(Descr0);
# lecture sans chomp -> affichage des 3 lignes
open (Descr1,'<','./cobaye') or die ("ouverture impossible $!");
while(defined (my $ligne = <Descr1> ) ){
print $ligne;
}
# chomp efface le \n de chaque ligne lue dans cobaye -> affichage sur une seule ligne
open (Descr2,'<','./cobaye') or die ("ouverture impossible $!");
while(defined ( my $ligne = <Descr2> ) ){
chomp $ligne;
print $ligne;
}
close(Descr2);
close(Descr1);
print "\n";
- reverse
- Inverse l'ordre des caractères d'une chaîne.
#!/usr/bin/perl -w
use strict;
# renversement d‘une liste
my @tableau = qw(premier deuxieme troisieme quatrieme);
print reverse @tableau; # quatriemetroisiemedeuxiemepremier
print "\n";
# renversement d‘une chaîne (le 3e item)
my $envers= reverse $tableau[2];
print $envers;# emeisiort