42 votes

Comment puis-je obtenir un caractère à un index donné en Perl?

Si j'ai une chaîne Perl:

 $str = "Hello";
 

comment puis-je obtenir un caractère à un index donné similaire à charAt (index)?

47voto

dirkgently Points 56879

Utilisez substr avec la longueur 1 comme dans:

 $nth = substr($string, n-1, 1);
 

Recherchez également perlmonks pour d'autres solutions.

23voto

Kent Fredric Points 35592
 $char = substr( $mainstring, $i , 1 );
 

Est-ce une façon de le faire, probablement la plus claire.

Si ce que vous vouliez était la valeur numérique et que vous aviez l'intention de faire ces lots:

 unpack("W*","hello")
 

Renvoie un tableau de valeurs Char:

 print join ",", unpack("W*","hello")  ; 
#  104,101,108,108,111
 

Pour des trucs Unicode / Utf8 appropriés que vous voudrez peut-être utiliser

 use utf8;
unpack("U*","hello\0ƀ\n") 
# 104,101,108,108,111,0,384,10
 

2voto

jettero Points 509

Le corollaire des autres réponses substr () est que vous pouvez également l'utiliser pour définir des valeurs à un index. Il prend cela en charge comme lvalue ou avec des arguments supplémentaires. Il est également très similaire à l'épissure, qui est la même chose, mais pour les tableaux.

 $string = "hello";
substr($string, 2, 2) = "this works?";
substr($string, 2, 2, "same thing basically");
@a = qw(s t r i n g s a n d t h i n g s);
@cut_out = splice(@a, 2, 2);
@cut_out = splice(@a, 2, 2, @replacement);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X