要领一:sort()+substr()函数
为了比较运用数字的字符串,从字符串中猎取数字是非常重要的。我们能够依据这些数字,对字符串数组举行排序。
substr()函数能够用于从字符串中提取这些数字。此函数将字符串中不包括数字的字符数作为参数。
注重:数组中的一切字母数字字符串必需具有雷同的大小。
示例:
use strict; use 5.010; # 用字母数字字符串定义数组值 my @x = qw(prin_4 Keys_8 pubg_12); print "原数组:\n"; print join " , ", @x; # 运用sort()和substr()函数对数组举行排序 my @y = sort { substr($a, 5) <=> substr($b, 5) } @x; # 输出排序的数组 print "\n\n排序的数组:\n"; print join " , ", @y;
输出:
原数组: prin_4 , Keys_8 , pubg_12 排序的数组: prin_4 , Keys_8 , pubg_12
要领二:sort()+正则表达式
假如字母数字字符串有点庞杂,实行上面的代码是一项困难的事情,因而,为了更简朴,我们能够运用正则表达式。
比方:假如数组包括“Keys_8_keys”,那末很难处置惩罚这类状况,因而为了准确过滤字符串中的数字,能够运用正则表达式。
注重:此要领不关心字母数字字符串是不是具有差别的大小。
示例:
use strict; use 5.010; # Sample string to extract # number from my $str = 'Key_8_key'; # Regular expression to extract the number my ($number) = $str =~ /(\d+)/; # 输出提取的数字 print "从Key_8_key中提取的数字是:$number\n"; # 用字母数字字符串定义数组 my @x = qw(pri_4 Key_8_key pubg_12); # 排序前的数组 print "\n排序前的数组:\n"; print join " , ", sort @x; # 运用正则表达式 my @y = sort { ($a =~ /(\d+)/)[0] <=> ($b =~ /(\d+)/)[0] } @x; # 排序后数组 print "\n\n排序后数组\n"; print join " , ", @y;
输出:
从Key_8_key中提取的数字是:8 排序前的数组: Key_8_key , pri_4 , pubg_12 排序后数组 pri_4 , Key_8_key , pubg_12
注:假如数组包括个中某些字符串中没有数字的字符串,则能够运用0替代该数字。要搜检字符串中是不是没有数字,请运用以下代码:
my @y = sort { (($a =~ /(\d+)/)[0] || 0) (($b =~ /(\d+)/)[0] || 0) } @x;
示例:
#!/usr/bin/perl use strict; use 5.010; # 夹杂范例字符串的数组 my @x = qw(pri_4 Key pubg_12); # 运用正则表达式 my @y = sort { (($a =~ /(\d+)/)[0] || 0) <=> (($b =~ /(\d+)/)[0] || 0) } @x; # 输出排序的数组 print "排序后数组:\n"; print join " , ", @y;
输出:
排序后数组: Key , pri_4 , pubg_12
以上就是本篇文章的全部内容,愿望能对人人的进修有所协助。更多精彩内容人人能够关注ki4网相干教程栏目!!!
以上就是Perl中怎样对夹杂字符串举行排序?(代码示例)的细致内容,更多请关注ki4网别的相干文章!