La función de index() en Perl

En el lenguaje de programación Perl tiene integrada la función de index(). Esta función se utiliza cuando se trabaja con cadenas. Con esta función se puede saber si el símbolo o una subcadena parte de la cadena, además de conocer la posición en la que se encuentra el símbolo o una subcadena en una cadena.

He aquí un ejemplo:

▶ Run
#!/usr/bin/perl

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

Este programa mostrará en pantalla el número de 4. La letra de la 'o' — es el quinto carácter en la cadena 'Hello', En el lenguaje de programación Perl, el primer carácter de la cadena es el número de 0. Por lo tanto, para el quinto carácter de la función de index() devuelve el número de 4

Lo que el primer carácter de la cadena es el número de 0 totalmente de forma similar a como se numeran los elementos en el Perl de array que el primer elemento de la matriz es el número de 0 (pero en el caso de la matriz hay una fineza).

Eso es lo que sacará de este mismo programa se si utilizar diferentes valores para el segundo argumento:

  • 'H'0
  • 'e'1
  • 'l'2 — en la barra de 'Hello' hay dos letras 'l', si la función de index() se pasa dos argumentos, siempre devuelve el número de la primera aparición de un carácter en una cadena de
  • 'o'4
  • 'z'-1 — letra 'z' en la línea de no, en este caso, la función devuelve un valor especial el número de -1
  • 'h'-1 — la función de index() регистрозависима. En la barra hay una letra de la 'H' en mayúsculas, pero no de la letra 'h' en minúsculas, por lo tanto, para 'h' la función devuelve un valor especial -1 — no encontrado
  • 'Hello'0 — la cadena de 'Hello' se incluye en la cadena de 'Hello' a partir del primer carácter, el primer carácter tiene el número de 0, que devuelve la función
  • 'el'1 — la cadena de 'el' está incluido en una cadena 'Hello' a partir del segundo carácter
  • 'asdf'-1 — esta línea no es parte de la cadena de 'Hello'

Los argumentos

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

La función de index() , debe especificar o dos, o tres argumentos. Si no se especifica ningún argumento, o especificar sólo uno, sería un error:

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

Si especifica más de 3 argumento, lo que se producirá un error:

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

El primero y el segundo argumento Perl percibe como la de la cadena. Si hay un tercer argumento, lo que se percibe como un número.

La función de index() se busca una cadena que contiene un segundo argumento en la fila que contiene el primer argumento a partir de la posición especificada en el tercer argumento (o con el comienzo de la línea, si el tercer no se especifica).

El valor devuelto

El resultado de la operación de la función de index() es siempre un número entero.

  • Si el número es positivo o 0, esto significa que la cadena desde el segundo argumento es la parte de la cadena del primer argumento. El valor indica la posición en la primera línea con la que comenzó la coincidencia. La búsqueda se produce al inicio de la cadena si el tercer argumento no se especifica, o con la posición especificada en el tercer argumento.
  • El número de -1 significa que la subcadena en la cadena de falta

Si no se utiliza el valor devuelto y en el Perl script tiene use warnings;, en la pantalla aparecerá un mensaje de advertencia:

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

Por ejemplo, una advertencia mostrará el siguiente programa:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

Ejemplo de uso de la index() con tres argumentos

He aquí un ejemplo de un programa. Aquí se utiliza la función de index() para encontrar una subcadena 'Ab' en fila en la que esta la subcadena se reúne dos veces. Si la función de index() no entregar el tercer argumento, esto es lo mismo que si se pasa el número de 0 como tercer argumento.

▶ Run
#!/usr/bin/perl

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

El programa mostrará en pantalla el número de 3 — esto significa que la subcadena 'Ab' se encuentra en la línea a partir del cuarto símbolo.

Y este es el programa que muestra el resultado de la operación de la función de index() para los distintos valores de un tercer argumento:

▶ 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) );
}

Este programa imprime:

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

index() en busca de una subcadena en una cadena desde la posición que aparece en el tercer argumento. La subcadena 'Ab' se encuentra en la línea dos veces. Primera vez a partir del índice de 3, la segunda vez que a partir del índice de 6.

'00 Ab Ab'
 01234567

La documentación oficial

He aquí el resultado del comando 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.

Temas relacionados

Otros articulos