Perl 字符串操作 以及 自定义排序
#!/usr/bin/perl-w
#########################################################################
#FileName:test6.pl
#########################################################################
#index(str,substr,position),在大字符串中查找
#position可以设置起始位置,返回位置数
my$stuff="helloword";
my$where=index($stuff,"wor");
print"where:$where\n";
my$where1=index($stuff,"w");
print"where1:$where1\n";
my$where2=index($stuff,"w",6);
print"where2:$where2\n";
#substr($string,$init_position,$length)处理部分字符串
$substr1=substr("helloworld",6,5);#得到substr1:world
print"substr1:$substr1\n";
#可以作替换字符串使用
substr($substr1,0,0)="hello";
print"substr1:$substr1\n";#substr1:helloworld
#替换功能也可以使用第四个参数
$string="helloworld";
substr($string,0,5,"xxxxx");
print"string:$string\n";
#sprintf格式化数据
$year="2014";
$month=8;
$day=2.0;
$data_tag=sprintf("%s/%d/%.3f",$year,$month,$day);
print"data_tag:$data_tag\n";#data_tag:2014/8/2.000
#排序
#排序子函数,按数字排序
subby_num{
$a<=>$b
}
@nums=(1,4,22,5,33,10,12);
print"nums:@nums\n";
@result1=sort@nums;
print"result1:@result1\n";#只会把数字当作字符排序
@result2=sortby_num@nums;
print"result2:@result2\n";#会根据数值大小进行排序
#对hash排序
my%socre=(
"kevin"=>100,
"xiang"=>50,
"jie"=>150,
"xxx"=>1,
"yyy"=>50
);
@socre1=%socre;
print"socre1:@socre1\n";#socre1:xiang50jie150kevin100xxx1yyy50
#排序子函数,根据value从小到大
#如果是数字直接用<=>如果是字符串用cmp
subby_socre_value{
$socre{$a}<=>$socre{$b}
}
@socre2=sortby_socre_valuekeys%socre;
print"socre2:@socre2\n";#socre2:xxxxiangyyykevinjie
%socre=(
"kevin"=>100,
"xiang"=>50,
"jie"=>150,
"xxx"=>1,
"yyy"=>50
);
#根据value从小到大,如果value相同,则根据key字母反序
#如果还有很多个条件,可以加or再限制
subby_socre_value_and_key{
$socre{$a}<=>$socre{$b}
or
$bcmp$a;
}
@socre3=sortby_socre_value_and_keykeys%socre;
print"socre3:@socre3\n";#socre3:xxxyyyxiangkevinjie
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。