第十四章 字符串与排序 1. 搜索在主串中的位置 my $where1 = index("Hello world","o");#搜索第一个子串 my $where2 = index("Hello world","o",$where1 + 1); #第三个参数起始搜索位置 my $where1 = rindex("Hello world","o"); #搜索最后一个子串 my $where2 = rindex("Hello world",$where1 - 1); #第三个参数是搜索截止位置 2. 获取子串 my $str = substr("HelloWorld",2,3); #值为llo,从第2个位置开始获取3个字符 my $str = substr("HelloWorld",5,1000); #第三个参数可省略,超出长度时返回剩下的字符串 my $str = substr("HelloWorld",-4,2); #值为or,第2个参数为负数时表示从结尾倒数 substr可以修改字符串被选中部分 my $string = "Hello World"; substr($string,6) = "Perl"; #变成了"Hello Perl" substr($string,-20) =~ s/Perl/world/g; 3. sprintf格式化串,返回格式化后的串 my $str = sprintf "%4d-%02d-%02d %2d:%02d:02d",$yr,$mo,$da,$h,$m,$s ; my $str = sprintf "%.2f",2.4999 ; while ( $num =~ s/^(-?\d+)(\d\d\d)/$1,$2/) {1;} 4. 高级排序 my @nums = sort { $a <=> $b } @some_nums; # 数组排序,<=>根据比较值返回 -1,1 my @nums = reverse sort { $a <=> $b } @some_nums; #数组排序,逆序排序 my @nums = sort { "\L$a" <=> "\L$b" } @some_nums; #数组排序,字符串不区分大小写排序 my @winners = sort { $a <=> $b } keys %score ; #哈希按键排序 my @winners = sort { score{$a} <=> score{$b} } keys %score #哈希按值排序