Fonction index() en Perl

Dans le langage de programmation Perl, il ya une fonction intégrée index(). Cette fonction est utilisée lors de la manipulation de chaînes. Avec l'aide de cette fonction, vous pouvez savoir si un caractère ou une chaîne faisant partie de la ligne ainsi que la position sur laquelle se trouve le symbole ou une sous-chaîne dans une chaîne.

Voici un exemple:

▶ Run
#!/usr/bin/perl

print( index('Hello', 'o') );

Ce programme affiche le nombre de 4. La lettre de 'o' est le cinquième caractère de la chaîne de 'Hello', Dans le langage de programmation Perl le premier caractère de la ligne est le numéro 0. Par conséquent, pour le cinquième caractère la fonction index() renvoie le nombre de 4

Alors que le premier caractère de la ligne est le numéro 0 est tout à fait similaire à ce que sont numérotées les éléments en Perl un tableau, le premier élément du tableau est le numéro 0 (mais dans le cas d'un tableau il y a une subtilité).

Voici ce qu'affiche ce programme si utiliser des valeurs différentes pour le deuxième argument:

  • 'H'0
  • 'e'1
  • 'l'2 — dans la barre de 'Hello' il ya deux lettres 'l', si la fonction index() transmis deux arguments, elle retourne toujours le nombre pour la première occurrence d'un caractère dans une chaîne
  • 'o'4
  • 'z'-1 — la lettre de 'z' à la ligne n'est pas, dans ce cas, la fonction renvoie la valeur spéciale du nombre de -1
  • 'h'-1 — fonction index() регистрозависима. En ligne il y a une lettre 'H', en majuscule, mais pas la lettre 'h' en minuscules, donc pour 'h' , la fonction renvoie la valeur spéciale -1 — introuvable
  • 'Hello'0 — chaîne 'Hello' est inclus dans la chaîne de 'Hello' commençant par le premier caractère, le premier caractère est le numéro 0, que renvoie la fonction
  • 'el'1 — chaîne 'el' est inclus dans la chaîne de 'Hello' , à partir du deuxième caractère
  • 'asdf'-1 — cette chaîne n'est pas la partie de la ligne 'Hello'

Les arguments

my $index1 = index($str, $substr);
my $index2 = index($str, $substr, $position);

La fonction index() , vous devez spécifier la ou deux ou trois arguments. Si vous ne spécifiez pas un argument ou spécifier un seul, ce serait une erreur:

Not enough arguments for index at script.pl line 3, near "index() "
Execution of script.pl aborted due to compilation errors.

Si vous spécifiez plus de 3 argument, ce serait une erreur:

Too many arguments for index at script.pl line 3, near "'a') "
Execution of script.pl aborted due to compilation errors.

Le premier et le deuxième argument Perl perçoit comme une chaîne. Si il y a un troisième argument, il est perçu comme un nombre.

La fonction de index() à la recherche d'une chaîne qui est contenue dans le deuxième argument de la ligne qui contient le premier argument à partir de la position spécifiée dans le troisième argument (ou depuis le début de la ligne, si à la troisième l'argument n'est pas spécifié).

La valeur de retour

Le résultat du travail de la fonction index() — c'est toujours un nombre entier.

  • Si le nombre est positif ou 0, ce qui signifie que la chaîne à partir de la deuxième argument est la partie de la ligne du premier argument. Valeur de la position de la première ligne qui a lancé une coïncidence. La recherche se passe au début de la chaîne si le troisième argument n'est pas spécifié, soit à partir de la position spécifiée dans le troisième argument.
  • Le nombre de -1 signifie que la sous-chaîne dans une chaîne manquante

Si vous n'utilisez pas la valeur de retour et Perl script a use warnings;, l'avertissement s'affiche:

Useless use of index in void context at script.pl line 6.

Par exemple, un tel avertissement génère le programme suivant:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

Exemple d'utilisation index() avec trois arguments

Voici un exemple de programme. Ici, utilise la fonction index() pour trouver une sous-chaîne 'Ab' dans la barre de cette la chaîne se rencontre deux fois. Si la fonction index() n'est pas de transmettre un troisième argument, c'est la même chose que si vous transmettez le nombre de 0 en tant que troisième argument.

▶ Run
#!/usr/bin/perl

print( index('00 Ab Ab', 'Ab', 0) );

Le programme affichera le nombre de 3 — cela signifie que la sous-chaîne 'Ab' est en ligne à partir du quatrième caractère.

Et voici le programme qui affiche le résultat du travail de la fonction index() pour différentes valeurs de la troisième argument:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

foreach my $position (0..9) {
    say( $position, ' ', index('00 Ab Ab', 'Ab', $position) );
}

Ce programme affiche:

0 3
1 3
2 3
3 3
4 6
5 6
6 6
7 -1
8 -1
9 -1

index() à la recherche d'une sous-chaîne dans une chaîne commençant à la position spécifiée dans le troisième argument. Substr 'Ab' rencontre en ligne deux fois. La première fois à partir de l'indice 3, et une seconde fois à partir de l'indice 6.

'00 Ab Ab'
 01234567

La documentation officielle

Voici la sortie de la commande perldoc -f index:

       index STR,SUBSTR,POSITION
       index STR,SUBSTR
               The index function searches for one string within another, but
               without the wildcard-like behavior of a full regular-expression
               pattern match.  It returns the position of the first occurrence
               of SUBSTR in STR at or after POSITION.  If POSITION is omitted,
               starts searching from the beginning of the string.  POSITION
               before the beginning of the string or after its end is treated
               as if it were the beginning or the end, respectively.  POSITION
               and the return value are based at zero.  If the substring is
               not found, "index" returns -1.

Thèmes connexes

Autres articles