查找子串:
index()和 rindex()
这两个函数用来在字符串中查找字串。rindex功能同index相同,只不过就是从后面开始找。
主要有两种用法,index($string,$subString);
index($string,$subString,$skip);
$skip参数表示跳过多少字符,用于指定开始位置,对rindex()函数来说是从字符串最后开始计算的。
substr()
参数:substr($string,$start,$length);
这个函数在用法上和c++的有点类似,不过就是这里的start位置可以为负数,这是个比较好的特性。负数表示从字符串最后开始计数。
而且可以对该函数的结果赋值,这样将修改在字符串中的相应子串。也是一个比较好的功能,有点类似replace的功能。
sprintf();
用来格式化一个字符串,用法和C中的sprintf是一样的。
关于排序:
sort函数默认是按照ASCII码顺序排序的,当我们在对一堆数字排序的时候,我们并不想按照ASCII码顺序排序,这是我们可以定制自己的排序规则。
- sub by_number {
- if ($a < $b) {
- return -1;
- } elsif ($a == $b) {
- return 0;
- } elsif ($a > $b) {
- return 1;
- }
- }
则我们可以这样使用
@sortResut = sort by_number @nums;则可以得到正确的结果。
对上面这种-1,0,1的关系,可以使用更简单的写法,
- sub by_number {
- $a <=> $b;
- }
当然也不一定要定义一个函数,当自己的排序规则比较简单时,可以直接在sort函数后面写上自己的规则
如
- @sortResult = sort { $a <=> $b } @nums;
对比较字符串可以使用cmp
如
排序规则的灵活制定非常方便,这如果c++中传递的函数的指针,用来回调函数。
先写到这里,未完待续;