기능 index() 에서는 Perl

에서는 Perl 프로그래밍 언어가 내장된 기능 index(). 이 기능을 사용할 수 있습니다 작업을 할 때 문자열입니다. 이 기능을 사용할 수 있는지 여부를 테스트하는 문자 또는 하위 문자열 부분의 문자열 도 알고있는 위치에 문자 또는 하위 문자열에는 문자열입니다.

예를 들어 다음과 같습니다.

▶ Run
#!/usr/bin/perl

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

이 프로그램이 표시됩니다 수 4. 문 'o' 번째 문자열을 'Hello', 에서 프로그래밍 언어,Perl,첫번째 문자열은 수 0. 따라서 다섯 번째 문자 기능 index() 번호를 반환합 4

사실의 첫 번째 문자열은 수 0 절대적으로 동일한 방식으로 번호 는 요소에서는 Perl 배열 첫 요소에 배열 방 0 일 (지의 경우에는 배열 거기에 하나의 섬세함).

는 것입니다 무엇을 동일한 프로그램을 사용하는 경우 다른 값을 위한 두 번째 인수:

  • 'H'0
  • 'e'1
  • 'l'2 —라인에서 'Hello' 있는 두 글자 'l'경우 기능 index() 두 개의 인수를 전달,그것은 항상 수를 반환합니다 첫 번째 문자의 문자열에서
  • 'o'4
  • 'z'-1 —letter 'z' 에선 이 경우에는,함수 값을 반환합니다 -1
  • 'h'-1index() 대소문자를 구분합니다. 문자열에는 문자'H 일에'상을 등록하지만,없는 편지'h'에서 더 낮은 경우,그에 대한 'h' 일 함수가 반환하는 특별한 값을 -1 —발견되지 않았
  • 'Hello'0 —선 'Hello' 에 포함되어 있 선 'Hello' 을 시작으로 첫 번째 기호,최초의 상징은 수 0반환하는 기능
  • 'el'1 —string 'el' 에 포함되어 있는 행 'Hello' 을 시작으로 두 번호
  • 'asdf'-1 —이 라인의 일부가 아닌 문자열 'Hello'

인수

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

기능 index() 지정해야 합니다 두 개 또는 세 개의 인수입니다. 를 지정하지 않는 경우는 모든 인수 거나 지정하는 단 하나,그것은 오류가:

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

지정한 경우에 3 개 이상 인수를,그것은 오류가:

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

첫 번째와 두 번째 인수하여 Perl 으로 해석하는 문자열입니다. 이 있는 경우 세 번째 인수를,그것은 감지 니다.

기능 index() 한 문자열에 포함되어 두 번째 인수에 포함하는 행 첫 번째 인수에서 시작에 지정된 위치에서 세 번째 인수(또는 문자열의 시작 부분으면 세 번째 인수를 지정하지 않).

반환 값

함수의 결과 index() 항상 정수입니다.

  • 는 경우 이 번호는 긍정적 또는 0,즉,문자열에서 두 번째 인자는 문자열의 첫 번째 인수로 합니다. 값을 의미하는 위치의 첫 번째 라인으로 시작한 우연이 아니다. 검색에서 발생하는 문자열의 시작 부분으면 세 번째 인수를 지정하지 않거나에서 지정된 위치에서 세 번째 인수로 합니다.
  • -1 의 하위 문자열에는 문자열이 없

사용하지 않는 경우에는 반환 값에서는 Perl 스크립트가 use warnings;, 다음 화면이 표시됩니다 경고:

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

예를 들어,같은 경고 주어질 것이 다음과 같은 프로그램:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

index('Hello', 'o');

의 예를 사용하여 index() 와 세 개의 인수

여기에 샘플 프로그램입니다. 그런 다음 기능을 사용하 index() 을 찾 substring 'Ab' 에는 라인에 이 문자열 부분이 두 번 나타납니다. 는 경우 기능 index() 지 않을 통과하는 세 번째 인수를,그것과 동일 전달하는 경우 0 으로 세 번째 인수로 합니다.

▶ Run
#!/usr/bin/perl

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

프로그램이 표시됩니다 수 3 의미는 하위 문자열'Ab'은 문자열의 시작에서 네 번째 문자입니다.

하지만 프로그램의 결과를 표시하는 기능 index() 에 대한 다른 값의 세 번째 인수:

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

이 프로그램으로 인쇄됩:

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

index() 검색에 대한 하위 문자열에는 문자열의 시작에 지정된 위치에서 세 번째 인수로 합니다. 하위 문자열 'Ab' 에서 발견된 문자열이다. 이후 처음으로 인덱스 3,두 번째 시간에서 인덱스 6.

'00 Ab Ab'
 01234567

공식적인 문서

여기에 출력하는 명령의 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.

관련 주제

다른 기사