web-dev-qa-db-fra.com

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)?

37
Gdeglin

Utilisez substr de longueur 1 comme dans:

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

Recherchez également perlmonks pour d'autres solutions.

43
dirkgently
$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 ceci:

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
22
Kent Fredric

Le corollaire des autres réponses substr () est que vous pouvez également l'utiliser pour définir les valeurs d'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);
2
jettero