Fungsi index() di Perl

Dalam bahasa pemrograman Perl memiliki fungsi built-in index(). Anda dapat menggunakan fungsi ini ketika bekerja dengan string. Dengan menggunakan fungsi ini, anda dapat menguji apakah sebuah karakter atau substring bagian dari string, dan juga untuk mengetahui posisi di mana karakter atau substring dalam string.

Berikut ini sebuah contoh:

▶ Run
#!/usr/bin/perl

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

Program ini akan menampilkan jumlah 4. Surat 'o' adalah kelima karakter dalam string 'Hello', Dalam bahasa pemrograman Perl, karakter pertama dalam string yang memiliki jumlah 0. Oleh karena itu, untuk kelima karakter fungsi index() kembali jumlah 4

Fakta bahwa karakter pertama dalam string memiliki jumlah 0 benar-benar cara yang sama seperti nomor unsur-unsur dalam Perl array, elemen pertama dalam array memiliki ruang 0 (tapi dalam kasus array ada satu kehalusan).

Itulah yang akan mengambil program yang sama jika anda menggunakan nilai yang berbeda untuk argumen kedua:

  • 'H'0
  • 'e'1
  • 'l'2 — sejalan 'Hello' ada dua huruf 'l'jika fungsi index() lewat dua argumen, itu selalu kembali jumlah untuk kejadian pertama sebuah karakter dalam string
  • 'o'4
  • 'z'-1 — huruf 'z' di line tidak ada, dalam hal ini, fungsi ini mengembalikan nilai -1
  • 'h'-1 — fungsi index() case-sensitive. Dalam string adalah huruf 'H' di bagian atas daftar, tetapi tidak ada huruf 'h' dalam kasus yang lebih rendah, sehingga untuk 'h' fungsi yang mengembalikan nilai khusus -1 — tidak ditemukan
  • 'Hello'0 — line 'Hello' adalah termasuk dalam garis 'Hello' dimulai dengan simbol, simbol pertama memiliki jumlah 0yang mengembalikan fungsi
  • 'el'1 — string 'el' disertakan dalam baris 'Hello' dimulai dengan kedua simbol
  • 'asdf'-1 — garis ini bukan bagian dari string 'Hello'

Argumen

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

Fungsi index() harus menentukan dua atau tiga argumen. Jika anda tidak menentukan apapun argumen, atau menentukan hanya satu, maka akan error:

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

Jika anda menetapkan lebih dari 3 argumen, maka akan error:

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

Yang pertama dan yang kedua argumen untuk Perl menafsirkan sebagai string. Jika ada argumen ketiga, hal itu dirasakan sebagai sebuah nomor.

Fungsi index() terlihat untuk string yang terkandung dalam argumen kedua dalam baris yang berisi di argumen pertama dimulai pada posisi yang ditentukan di argumen ketiga (atau awal string jika ketiga argumen ini tidak ditentukan).

Nilai kembali

Hasil dari fungsi index() adalah selalu merupakan bilangan bulat.

  • Jika nomor tersebut adalah positif atau 0, ini berarti bahwa string dari argumen kedua adalah substring dari argumen pertama. Nilai berarti bahwa posisi baris pertama yang dimulai dengan sebuah kebetulan. Pencarian terjadi dari awal string jika argumen ketiga yang tidak ditentukan, atau dari posisi yang ditentukan di argumen ketiga.
  • Jumlah -1 berarti bahwa substring dalam string yang hilang

Jika anda tidak menggunakan kembali nilai di Perl script use warnings;, kemudian layar akan menampilkan pesan peringatan:

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

Misalnya, seperti peringatan akan diberikan program berikut:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

Contoh menggunakan index() dengan tiga argumen

Berikut ini adalah contoh program. Kemudian gunakan fungsi index() untuk menemukan substring 'Ab' di baris yang ini string substring muncul dua kali. Jika fungsi index() tidak lulus argumen ketiga, itu adalah sama seperti jika anda lulus 0 sebagai argumen ketiga.

▶ Run
#!/usr/bin/perl

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

Program ini akan menampilkan jumlah 3 berarti bahwa substring 'Ab' adalah string yang dimulai pada karakter keempat.

Tapi program yang menampilkan hasil dari fungsi index() untuk nilai yang berbeda dari argumen ketiga:

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

Program ini akan mencetak:

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

index() mencari substring dalam string mulai dari posisi yang ditentukan di argumen ketiga. Substring 'Ab' ditemukan dalam string dua kali. Untuk pertama kalinya sejak indeks 3, kedua kalinya dari indeks 6.

'00 Ab Ab'
 01234567

Dokumentasi resmi

Berikut ini adalah output dari perintah 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.

Topik terkait

Artikel lainnya