Chức năng index() trong Perl

Perl ngôn ngữ đã được tích hợp trong chức năng index(). Bạn có thể sử dụng năng này khi làm việc với dây. Sử dụng năng này, anh có thể kiểm tra xem một nhân vật hoặc chuỗi một phần của chuỗi, và cũng có thể biết được vị trí mà các nhân vật, hoặc chuỗi trong chuỗi.

Đây là một ví dụ:

▶ Run
#!/usr/bin/perl

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

Chương trình này sẽ hiển thị số 4. Thư 'o' là nhân vật thứ năm trong chuỗi 'Hello', Trong ngôn ngữ Perl, nhân vật đầu tiên trong chuỗi có số 0. Vì vậy, cho những nhân vật thứ năm chức năng index() trả về số 4

Thực tế là nhân vật đầu tiên trong chuỗi có số 0 hoàn toàn giống như số các yếu tố trong một Perl mảng, nguyên tố đầu tiên trong mảng có phòng 0 (nhưng trong trường hợp của một mảng đó là một sự tinh tế).

Đó là những gì sẽ mất cùng một chương trình nếu bạn sử dụng giá trị khác nhau cho số thứ hai:

  • 'H'0
  • 'e'1
  • 'l'2 — trong dòng 'Hello' có hai chữ 'l'nếu các chức năng index() đi qua hai lập luận, nó luôn trở về số đầu tiên xuất hiện của một nhân vật trong một chuỗi
  • 'o'4
  • 'z'-1 — thư 'z' trong các dòng không, trong trường hợp này, các chức năng trở về các giá trị -1
  • 'h'-1 chức năng index() trường hợp nhạy cảm. Trong chuỗi là chữ 'H' ở phía trên đăng ký, nhưng không có chữ 'h' trong trường hợp thấp hơn, như vậy cho 'h' các chức năng trở về các giá trị đặc biệt -1 — không được tìm thấy
  • 'Hello'0 — dòng 'Hello' là bao gồm trong dòng 'Hello' bắt đầu với các biểu tượng đầu tiên, biểu tượng đầu tiên có số 0đó trả một chức năng
  • 'el'1 — string 'el' bao gồm trong hàng 'Hello' bắt đầu với những thứ hai biểu tượng
  • 'asdf'-1 — dòng này không phải là một phần của chuỗi 'Hello'

Lập luận

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

Chức năng index() phải xác định hoặc hai, hoặc ba, lập luận. Nếu bạn không chỉ bất kỳ cuộc tranh luận, hoặc chỉ định duy nhất, nó sẽ lỗi:

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

Nếu bạn định hơn 3, lập luận, nó sẽ lỗi:

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

Đầu tiên và số thứ hai để Perl giải thích như dây. Nếu có một số thứ ba, đó là cảm nhận như một con số.

Chức năng index() trông cho chuỗi chứa trong số thứ hai trong hàng đó có chứa trong đầu cuộc tranh luận bắt đầu vào vị trí quy định trong số thứ ba (hoặc đầu của chuỗi nếu các thứ ba cuộc tranh luận không định).

Trở lại giá trị

Kết quả của những chức năng index() luôn là một số nguyên.

  • Nếu số là tích cực hay 0, điều này có nghĩa là các chuỗi từ số thứ hai là chuỗi các số đầu tiên. Các giá trị đó có nghĩa là các vị trí của dòng đầu tiên đó đã bắt đầu với một sự trùng hợp ngẫu nhiên. Tìm kiếm xảy ra từ sự khởi đầu của chuỗi nếu số thứ ba được không xác định, hoặc từ vị trí chỉ định trong số thứ ba.
  • Số -1 có nghĩa là các chuỗi trong chuỗi là mất tích

Nếu bạn không thể sử dụng sự trở lại giá trị trong Perl là use warnings;, sau đó, màn hình hiển thị cảnh báo:

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

Ví dụ, như một cảnh báo, sẽ được đưa ra chương trình sau đây:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

Một ví dụ về sử dụng index() với ba lập luận

Đây là một mẫu chương trình. Sau đó, sử dụng các chức năng index() để tìm các chuỗi 'Ab' ở đường này xâu chuỗi xuất hiện hai lần. Nếu các chức năng index() không để vượt qua những số thứ ba, nó là giống như nếu các anh vượt qua 0 như số thứ ba.

▶ Run
#!/usr/bin/perl

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

Chương trình sẽ hiển thị các số 3 nghĩa là các chuỗi 'Ab' là trong chuỗi bắt đầu vào thứ tư nhân vật.

Nhưng chương trình hiển thị các kết quả của các chức năng index() cho giá trị khác nhau của số thứ ba:

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

Chương trình này sẽ in:

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

index() tìm kiếm cho một chuỗi trong chuỗi bắt đầu vào vị trí quy định trong số thứ ba. Chuỗi 'Ab' tìm thấy trong chuỗi hai lần. Lần đầu tiên kể từ các chỉ số 3lần thứ hai từ chỉ số 6.

'00 Ab Ab'
 01234567

Tài liệu chính thức

Đây là kết quả của sự chỉ huy 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.

Chủ đề liên quan

Các bài viết khác