Perl 小骆驼学习笔记 - 12.字符串与排序

发布于:2025-07-18 ⋅ 阅读:(20) ⋅ 点赞:(0)

1. 用index和rindex查找子字符串

 $name = index($a,$b,n);

      指$a在$b的第几个字符位置出现(以字符为单位,不是单词啊。空格也表示字符),从0开始计数。

       index返回出现的位置的数字,没有找到的话返回-1;

       n表示开始搜索的位置,可以是表达式,如果没有写出n,默认从零开始;

      rindex表示从后向前搜索字符,但返回值还是正着数的时候的值;

2. 用substr操作子字符串

  my $name =substr($string,$initial_position,$length);

    $string:待操作的字符串;

    $initial_postion:初始位置(从0起算),可以为负值;

    $length:代操作的长度,可以不写,表示取到字符串结尾;

    $name 返回的是取出来的值,$string保存的是剩余值;

另一个用法:

   substr($string,0,5) = "$string1";

     用$strings替换掉操作的字符;不用顾忌长度;

用法2:

 substr($string,-20) =~ s/fred/aaa/g;

      可以将后20个字符中fred变为aaa;

用法3:

my $long = "......";

my $right = substr($long,inedx($long, "某一个元素"));

3.sprintf函数

      sprintf格式化字符串:

      用法:

my $name = sprintf "%s:%d;%s",$a,$b,$c;

      sprintf格式数字:

      用法:

     my $name= sprintf "%.2f",$number;

4. 非十进制的数字字符串的转换

     可以采用hex('.....'),oct('.......')把字符串转换为对应的数字

5.高级排序(从小到大排列)

     1. 采用飞船操作符“<=>”来比较数字,用法:

@array1 = sub by_someways {$a<=>$b} @array;

     注意此处的$a,$b不要声明,他由Perl给出,@array表示待操作的数组;

     2. 采用三路操作符“cmp”比较字符串,用法:

@array1 = sort {$a cmp $b} @array;

          他还有扩展用法:

    @array1 = sort {"\L$a" cmp "\L$b"} @array;

          表示不区分大小写的比较;

6. 按哈希值进行排序;

           当我们需要比较哈希值时,我们采用:

@array =  sort {$hash{$a}<=>$hash{$b}} %hash;

          在比较中,我们采用keys寻找元素,之后对元素比较,按照从小到大排列,这样子的话,将比较之后的元素放在@array之中;

7. 按多个键排序

         四级排序:

@array = sort{

    &fine($b)<=>&fine($a) or

    $items{$b}<=>$item{$a} or

    $family{$b}<=>$family{$a} or

    $a <=> $b

}  @array1;

总结:

本小节提供了字符串的一些操作办法,在字符串的一些操作中会比较好用,这些信息也需要被掌握。


网站公告

今日签到

点亮在社区的每一天
去签到