千家信息网

Perl字符串和排序怎么用

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了Perl字符串和排序怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Perl字符串和排序1、使用索引寻找子串Pe
千家信息网最后更新 2025年11月08日Perl字符串和排序怎么用

这篇文章主要介绍了Perl字符串和排序怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Perl字符串和排序

1、使用索引寻找子串

Perl语言中查找的方法依赖于查找的地方。如果在一个大字符串中查找,那很幸运的,index函数可以帮你的忙。字符位置是从0开始编号的。

$where=index($big,$small);查找子串***次在大字符串中出现的地方,返回***个字符的位置,如果子串不存在,则返回-1。可以将位置数(positionnumber)想象成找到此子串所经过的字符。

my$where2=index($stuff,"w",$where+1);#$where得到6,第三个参数给出了返回值的极小值。

你可能想知道某个子串***出现的位置。可以使用rindex函数来做到,返回距离字符串头的位置。

2、Perl语言中substr操作子串

substr只处理部分的字符串。$part=substr($string,$initial_position,$length);

一个字符串,一个从0开始编号的初始位置,以及子串的长度。返回值是一个子串。

如果请求的长度超过了字符串的长度,得到的是一个比你所希望的更短的结果。如果想明确要求到达字符串的结尾处,无论其或长或短,可以省略掉第三个参数。

初始位置可以是负的,表示从字符串结尾处开始(此时,-1表示***一个字符)

字符串中选择的相应位置是可以改变的:

my$string="Hello,world!";
substr($string,0,5)="Goodbye";#$string现在变成了"Goodbye,world!"

substr($string,-20)=~s/fred/barney/g;
susbtr:使用4个参数,第四个参数是替换的字符串:

my$previous_value=substr($string,0,5,"Goodbye");

3、Perl语言中sprintf

sprintf函数的参数和printf的参数完全相同(除了可选的文件句柄外),但它返回的是被请求的字符串,而非打印出来。这对于希望将某个格式的字符串存入变量以供将来使用的情况非常方便。

my$data_tag=sprintf"%4d/d/dd:d:d",$yr,$mo,$da,$h,$m,$s;

$date_tag得到像"2038/01/193:00:08"这样的值。格式化数字中的前置0的含义是,如果需要,在前面加上0,使之达到需要的宽度。

4、subbig_money

{
my$number=sprintf"%.2f",shift@_;
1while$number=~s/^(-?\d+)(\d\d\d)/$1,$2/;#在do-nothing循环中,每一次加入一个逗号
$number=~s/^(-?)/$1\$/;#将美元符号放入合适的位置
$number;
}

5、Perl语言中高级排序

排序子程序返回一个值,表明这两个元素如何比较的。如果在最终结果中$a出现在$b之前,则其排序子程序返回-1。如果$b出现在$a之前,则返回1。如果$a和$b的顺序无关紧要,则子程序返回0。

subby_number{
if($a<$b){-1}elsif($a>$b){1}else{0}
}

要使用一个排序子程序,将它(不使用&)放在关键字sort和你要排序的列表之间。

my@result=sortby_number@some_numbers;许多的排序子程序的名字都由by_开头,来描述如何排序

我们不需要在排序子程序中申明$a和$b,以及给它们设置。如果做了,子程序将不能得到正确结果。我们让Perl为我们给$a和$b赋值,我们只需要写如何比较。

三向的比较数字操作符:太空船(spaceship)符号(<=>)。这个操作符比较两个数字,按照数字将其排序,并返回-1,0,1。subby_number{$a<=>$b}

字符串的三向操作符:cmp

subcase_insenstive{"\L$a"cmp"\L$b"}大小写无关的排序

当你的排序子程序像我们这里的那样简单时,你可以通过使用"inline"子程序来代替排序的名字,使之更简单,如:my@numbers=sort{$a<=>$b}@some_numbers;在当代的Perl程序中,几乎见不到独立的排序子程序。

my@descending=reversesort{$a<=>$b}@some_numbers;按照数字的降序方式排序

my@descending=sort{$b<=>$a}@some_nubmers;按照数字的降序方式排序

6、hashes中使用sort时,只是对hash的keys排序(按照字母表顺序排序)。现在我们将对hash的keys排序,其顺序由其对应的hash中的值决定。

subby_socre{$score{$b}<=>$score{$a}}

my%score=("barney"=>,"fred"=>205,"dino"=>30);
my@winners=sortby_scorekeys%score;

subby_score_and_name{
$score{$b}<=>$score{$a}#按照降序的成绩
or
$acmp$b;#字母顺序的名字
}Perl语言中排序子程序可以有多级。

感谢你能够认真阅读完这篇文章,希望小编分享的"Perl字符串和排序怎么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

排序 字符 字符串 子程序 位置 参数 数字 语言 篇文章 顺序 函数 名字 操作符 结果 长度 三个 两个 个子 地方 字母 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 鉴定篡改数据库 以网络安全为题手抄报简单漂亮 小学生网络安全教育简洁发言稿 安捷鸽钟服务器号码各地是否一致 深圳市网络技术 网络安全装置入什么科目 vbs将变量插入数据库 snd网络安全 高中英语课件软件开发 如何获取服务器管理口ip 天气预报app抓取数据库 方舟可以在哪个服务器开麦 哈尔滨新华互联网科技学校 网络安全法第61条规定 无尽的拉格朗日服务器关闭了吗 中国长城网络安全产品有些啥 宝安一对一学软件开发 服务器状态魔兽世界 绘图板软件开发实验报告 sybase 数据库管理 软件打不开提示数据库信息未设置 VB和sql怎么连接数据库 深圳仁智信网络技术 国家网络安全顶层设计方案 天意网络安全绘画 手机怎么取消安全检测服务器 蓟州区媒体网络技术质量保证 学校网络安全风险排查报告 网络安全头像怎么写 maven 数据库驱动
0