介绍
小编给大家分享一下Perl中对混合字符串进行排序的方法,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
Perl中的排序可以使用预定义的函数“排序”来完成,此函数使用快速排序算法对传递给它的数组进行排序。
为了比较使用数字的字符串,从字符串中获取数字是非常重要的。我们可以根据这些数字,对字符串数组进行排序。
substr()函数可以用于从字符串中提取这些数字。此函数将字符串中不包括数字的字符数作为参数。
<强>注意:强>数组中的所有字母数字字符串必须具有相同的大小。
示例:
使用严格; 使用5.010; #用字母数字字符串定义数组值 我@x=qw (prin_4 Keys_8 pubg_12); 打印“原数组:\ n"; 加入“打印;、“@x; #使用sort()和substr()函数对数组进行排序 我@y={排序子串(一个美元,5)& lt;=比;substr (b美元,5)}@x; #输出排序的数组 打印“\ n \ n排序的数组:\ n"; 加入“打印;、“@y;
输出:
原数组: prin_4、Keys_8 pubg_12 排序的数组: prin_4、Keys_8 pubg_12
如果字母数字字符串有点复杂,执行上面的代码是一项艰巨的工作,因此,为了更简单,我们可以使用正则表达式。
例如:如果数组包含“Keys_8_keys”,那么很难处理这种情况,因此为了正确过滤字符串中的数字,可以使用正则表达式。
<强>注意:强>此方法不关心字母数字字符串是否具有不同的大小。
示例:
使用严格; 使用5.010; #样品提取字符串 #数字 我$ str=& # 39; Key_8_key& # 39;; #正则表达式提取号码 我的(美元)=$ str=~/(\ d +)/; #输出提取的数字 打印“从Key_8_key中提取的数字是:美元数量\ n"; #用字母数字字符串定义数组 我@x=qw (pri_4 Key_8_key pubg_12); #排序前的数组 打印“\ n排序前的数组:\ n"; 加入“打印;、“@x排序; #使用正则表达式 我@y={($=~/(\ d +)/) [0] & lt;=比;($ b=~/(\ d +)/) [0]} @x; #排序后数组 打印“\ n \ n排序后数组\ n"; 加入“打印;、“@y;
输出:
从Key_8_key中提取的数字是:8 排序前的数组: Key_8_key、pri_4 pubg_12 排序后数组 pri_4、Key_8_key pubg_12
<强>注:>强如果数组包含其中某些字符串中没有数字的字符串,则可以使用0代替该数字。要检查字符串中是否没有数字,请使用以下代码:
我@y=类{(($=~/(\ d +)/) [0] | | 0) (($ b=~/(\ d +)/) [0] | | 0)} @x;
示例:
# !/usr/bin/perl 使用严格的; 使用5.010; #混合类型字符串的数组 我@x=qw (pri_4关键pubg_12); #使用正则表达式 我@y={(($=~/(\ d +)/) [0] | | 0) & lt;=比; (($ b=~/(\ d +)/) [0] | | 0)} @x; #输出排序的数组 打印“排序后数组:\ n"; 加入“打印;、“@y;
输出:
排序后数组: pri_4,关键pubg_12
看完了这篇文章,相信你对Perl中对混合字符串进行排序的方法有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!