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;
总结:
本小节提供了字符串的一些操作办法,在字符串的一些操作中会比较好用,这些信息也需要被掌握。