perl中,如果我们要查找一个字符子串在字符串中的位置,perl给我们提供了两个函数,一个为index,另外一个rindex。从两个函数上我们其实就可以看出,index为从前往后查找(从左到右),而rindex则是从后往前(从右到左)查找。下面我们就通过一个例子来看看index和rindex是怎么工作的。
-
#! /usr/bin/perl
-
use strict;
-
use warnings;
-
-
my $string = "I can learn much form perlcn.com";
-
my $loc = index ( $string, "perlcn" );
-
print "$loc\n";
-
$loc = index ( $string, "I" );
-
print "$loc\n";
-
$loc = index ( $string, "Perlcn" );
-
print "$loc\n";
-
$loc = rindex ( $string, "perlcn" );
-
print "$loc\n";
上面这个程序的打印如下:
-
22
-
0
-
-1
-
22
从上面程序的打印结果我们也可以看出,如果index或rindex能够匹配到字符串,则会返回子字符串在整个字符串中的位置,注意此处的位置以0开始,如果在字符串中没有找到这个子串,则index或rindex返回-1.
当然,如果你能够判断出子串在字符串中的大概位置,你可以给index或rindex指出开始搜索的起始位置,例如:
-
my $loc = index ( $string, "perlcn", 20 );
我们指定index从第20个字符的位置开始搜索perlcn这个字符串,这样可以大大的提供搜索的效率。