web-dev-qa-db-fra.com

Comment obtenir la longueur d'une chaîne en Perl?

Quel est l'équivalent Perl de strlen()?

50
Kip
perldoc -f longueur 
 
 longueur EXPR 
 longueur Renvoie la longueur en caractères de la valeur de EXPR. Si EXPR est 
 Omis, renvoie la longueur de $ _. Notez que cela ne peut pas être utilisé sur un tableau ou un hachage entier de 
 Pour connaître le nombre d'éléments. Pour 
, Utilisez respectivement "scalar @array" et "scalar keys% hash". 
 
 Notez les caractères: si l'EXPR est en Unicode, vous obtiendrez le numéro 
 nombre de caractères, pas le nombre d'octets. Pour obtenir la longueur en 
 Octets, utilisez "do {use bytes; length (EXPR)}", voir octets. 
73
Paul Tomblin

Bien que 'length ()' soit la bonne réponse qui devrait être utilisée dans n'importe quel code sain d'esprit, horreur de la longueur d'Abigail doit être mentionné, ne serait-ce que pour le bien de Perl.

Fondamentalement, l'astuce consiste à utiliser la valeur de retour de l'opérateur de translittération fourre-tout:

print "foo" =~ y===c;   # prints 3

y /// c remplace tous les caractères par eux-mêmes (grâce à l'option complémentaire 'c'), et renvoie le nombre de caractères remplacés (donc, effectivement, la longueur de la chaîne).

43
Yanick
length($string)
35
JDrago

La fonction length():

$string ='String Name';
$size=length($string);
1
RANA DINESH

Vous ne devriez pas utiliser cela, car la longueur ($ string) est plus simple et plus lisible, mais je suis tombé sur certains d'entre eux en parcourant le code et j'étais confus, donc au cas où quelqu'un d'autre le ferait, ceux-ci obtiennent également la longueur d'une chaîne:

my $length = map $_, $str =~ /(.)/gs;
my $length = () = $str =~ /(.)/gs;
my $length = split '', $str;

Les deux premiers fonctionnent en utilisant l'indicateur global pour faire correspondre chaque caractère de la chaîne, puis en utilisant la liste de correspondances retournée dans un contexte scalaire pour obtenir le nombre de caractères. Le troisième fonctionne de la même manière en divisant chaque caractère au lieu de correspondre à des expressions rationnelles et en utilisant la liste résultante dans un contexte scalaire

0
pslessard