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";
上面这个程序的打印如下:
从上面程序的打印结果我们也可以看出,如果index或rindex能够匹配到字符串,则会返回子字符串在整个字符串中的位置,注意此处的位置以0开始,如果在字符串中没有找到这个子串,则index或rindex返回-1.
当然,如果你能够判断出子串在字符串中的大概位置,你可以给index或rindex指出开始搜索的起始位置,例如:
my $loc = index($string,"perlcn",20);
我们指定index从第20个字符的位置开始搜索perlcn这个字符串,这样可以大大的提供搜索的效率。