Funktion index() in Perl

In der Programmiersprache Perl gibt es die eingebaute Funktion index(). Diese Funktion wird bei der Arbeit mit Zeichenketten. Mit dieser Funktion können Sie herausfinden, ob ein Zeichen oder eine Teilzeichenfolge Teil einer Zeile, und auch lernen, die Position auf dem sich ein Symbol oder eine Teilzeichenfolge in der Zeichenfolge.

Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

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

Dieses Programm zeigt die Anzahl der 4. Buchstabe 'o' — das fünfte Zeichen in der Zeile 'Hello', In der Programmiersprache Perl das erste Zeichen in der Zeile hat die Nummer 0. Also für das fünfte Zeichen Funktion index() gibt die Anzahl der 4

Die Tatsache, dass das erste Zeichen in der Zeile hat die Nummer 0 ganz ähnlich wie nummeriert Elemente in Perl array — das erste Element im array hat die Nummer 0 (aber im Falle eines Arrays es gibt eine Feinheit).

Das ist, was wird das gleiche Programm verwenden, wenn unterschiedliche Werte für das zweite argument:

  • 'H'0
  • 'e'1
  • 'l'2 — in der 'Hello' gibt es zwei Buchstaben 'l', wenn die Funktionen index() zwei Argumente übergeben, es gibt immer die Zahl für das erste vorkommen des Zeichens im String
  • 'o'4
  • 'z'-1 — Buchstaben 'z' in der Zeile Nein, in diesem Fall gibt die Funktion eine Besondere Bedeutung Anzahl der -1
  • 'h'-1 — Funktion index() регистрозависима. In der Zeile der Buchstabe 'H' in Großbuchstaben, aber keine Buchstaben 'h' in Kleinbuchstaben, also für 'h' gibt die Funktion eine Besondere Bedeutung -1 — nicht gefunden
  • 'Hello'0 — Zeile 'Hello' ist in Zeile 'Hello' beginnend mit dem ersten Zeichen, das erste Zeichen hat die Nummer 0, dass die Funktion und gibt
  • 'el'1 — Zeile 'el' ist in Zeile 'Hello' beginnend mit dem zweiten Zeichen
  • 'asdf'-1 — diese Zeile ist nicht Teil der Zeile 'Hello'

Argumente

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

Funktionen index() müssen Sie unbedingt angeben entweder zwei oder drei Argumente. Wenn nicht angegeben kein argument, oder geben Sie nur ein, dann wird der Fehler:

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

Wenn Sie mehr als 3 Argumente, dann wird der Fehler:

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

Das erste und das zweite argument Perl wahrnimmt als Strings. Wenn es das Dritte argument, so wird er wahrgenommen als Zahl.

Funktion index() sucht die Zeile enthält die im zweiten argument in der Zeile, die enthält im ersten argument ab der angegebenen Position im Dritten argument (oder am Anfang der Zeichenfolge, wenn der Dritte nicht angegeben).

Der Rückgabewert

Das Ergebnis der Arbeit der Funktion index() — es ist immer eine ganze Zahl.

  • Wenn die Zahl positiv oder 0, das bedeutet, dass die Zeichenfolge aus dem zweiten argument ist ein Teil der Zeilen aus dem ersten argument. Der Wert bedeutet eine Position in der ersten Zeile mit dem Zufall begann. Suche am Anfang der Zeichenfolge Auftritt, wenn das Dritte argument nicht angegeben wird, entweder mit der angegebenen Position im Dritten argument.
  • Die Zahl der -1 bedeutet, dass die Teilzeichenfolge in der Zeichenfolge fehlt

Wenn der Rückgabewert nicht zu verwenden und im Perl-Skript gibt es use warnings;, der Bildschirm wird eine Warnung angezeigt:

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

Zum Beispiel, eine solche Warnung gibt das folgende Programm:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

Beispiel für die Verwendung index() mit drei Argumenten

Hier ist ein Beispiel des Programms. Hier wird die Funktion index() , um eine Teilzeichenfolge 'Ab' in der Zeile, in der diese substring trifft sich zweimal. Wenn die Funktionen index() nicht das Dritte argument übergeben, dann ist es das gleiche wie wenn Sie die Anzahl der 0 als drittes argument.

▶ Run
#!/usr/bin/perl

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

Das Programm zeigt die Anzahl der 3 — dies bedeutet, dass die Zeichenkette 'Ab' befindet sich in der Zeile beginnend mit dem vierten Zeichen.

Aber das Programm zeigt das Ergebnis der Funktion index() für verschiedene Werte des Dritten Arguments:

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

Dieses Programm zeigt:

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

index() sucht nach einem Teilstring im String ab Position das Sie am Dritten argument. Substring 'Ab' tritt in der Zeile zweimal. Das erste mal beginnend mit dem index 3, ein zweites mal beginnend mit dem index 6.

'00 Ab Ab'
 01234567

Die offizielle Dokumentation

Hier ist die Ausgabe des Befehls 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.

Verwandte Themen

Andere Artikel