Funzione index() in Perl

Nel linguaggio di programmazione Perl ci sono built-in funzione di index(). Questa funzione viene utilizzata quando si lavora con le stringhe. Con questa funzione è possibile sapere se un personaggio o una sottostringa della stringa, e anche di conoscere la posizione in cui si trova il simbolo o una sottostringa in una stringa.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

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

Questo programma visualizza il numero di 4. Lettera 'o' — questo è il quinto carattere della stringa 'Hello', Nel linguaggio di programmazione Perl primo carattere della riga ha un numero di 0. Pertanto, per il quinto carattere funzione index() restituisce il numero di 4

Quello che il primo carattere della riga è 0 completamente in modo simile a come sono numerati gli elementi in Perl matrice — il primo elemento dell'array ha un numero di 0 (ma nel caso di un array c'è una sottigliezza).

Ecco cosa porterà questo stesso programma se utilizzare valori diversi per il secondo argomento:

  • 'H'0
  • 'e'1
  • 'l'2 — nella barra di 'Hello' ci sono due lettere 'l', se le funzioni index() trasmesso due argomenti, lei restituisce sempre un numero per la prima occorrenza di un carattere in una stringa
  • 'o'4
  • 'z'-1 — lettere 'z' nella barra di no, in questo caso, la funzione restituisce un valore speciale numero -1
  • 'h'-1 — funzione index() регистрозависима. In una riga di una lettera 'H' in maiuscolo, ma non c'è la lettera 'h' in minuscolo, quindi per 'h' la funzione restituisce un valore speciale -1 — non trovato
  • 'Hello'0 — riga 'Hello' è incluso in una stringa 'Hello' a partire dal primo carattere, il primo carattere ha un numero di 0, che restituisce la funzione
  • 'el'1 — riga 'el' è incluso in una stringa 'Hello' a partire dal secondo carattere
  • 'asdf'-1 — questa stringa non è parte della stringa 'Hello'

Argomenti

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

Funzioni index() , è necessario specificare o due, o tre argomenti. Se non si specifica alcun argomento, o specificare solo uno, quello è un errore:

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

Se si specifica più di 3 argomento, quello è un errore:

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

Il primo e il secondo argomento Perl percepisce come una stringa. Se c'è un terzo argomento, quello che aveva percepito come un numero.

Funzione index() cerca la riga che contiene nel secondo argomento nella riga che contiene il primo argomento a partire dalla posizione specificata nel terzo argomento (o all'inizio della stringa, se il terzo l'argomento non è specificato).

Il valore restituito

Il risultato del lavoro funzione index() — è sempre un numero intero.

  • Se il numero è positivo o 0, questo significa che la stringa di secondo argomento è una stringa di primo argomento. Il valore indica la posizione nella prima riga con cui è iniziata una coincidenza. La ricerca avviene all'inizio della stringa, se viene omesso, o con la posizione indicata nel terzo argomento.
  • Il numero di -1 significa che la sottostringa in una stringa mancante

Se non utilizzare il valore restituito e in Perl script ci sono use warnings;, poi, sullo schermo viene visualizzato un messaggio di avviso:

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

Ad esempio, l'avviso genera il seguente programma:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

Esempio di utilizzo index() con tre argomenti

Ecco un esempio di programma. Qui viene utilizzata la funzione index() per trovare una stringa 'Ab' nella riga in cui questa sottostringa si riunisce due volte. Se la funzione index() non trasferire il terzo argomento, che poi è lo stesso come se trasferire il numero 0 come terzo argomento.

▶ Run
#!/usr/bin/perl

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

Il programma visualizza il numero di 3 — questo significa che la sottostringa 'Ab' si trova in una riga a partire dal quarto carattere.

Ecco il programma che visualizza il risultato di un lavoro funzione index() per differenti valori di terzo argomento:

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

Questo il programma visualizzerà:

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

index() alla ricerca di una sottostringa in una stringa a partire dalla posizione specificata nel terzo argomento. Sottostringa 'Ab' esce in riga due volte. La prima volta a partire dall'indice 3, la seconda volta a partire dall'indice 6.

'00 Ab Ab'
 01234567

La documentazione ufficiale di

Ecco l'output 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.

Temi correlati

Altri articoli