功能 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 —信 'z' 在线没有,在这种情况下,功能返回的价值 -1
  • 'h'-1 功能 index() 情况下,敏感的。 在串的信的'H'在上注册,但没有字母'h'在较低的情况,所以对于 'h' 功能返回的特殊价值 -1 —找不到
  • 'Hello'0 线 'Hello' 包括在线 'Hello' 起与第一符号,第一符号与数 0返回的一个函数
  • 'el'1 —串 '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() 找到的子串 '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() 搜索字符串串指定的位置开始在第三个参数。 Substring '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.

相关的主题

其他文章