您好,登錄后才能下訂單哦!
這篇文章主要介紹了Perl字符串和排序怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Perl字符串和排序
1、使用索引尋找子串
Perl語言中查找的方法依賴于查找的地方。如果在一個大字符串中查找,那很幸運的,index函數(shù)可以幫你的忙。字符位置是從0開始編號的。
$where=index($big,$small);查找子串***次在大字符串中出現(xiàn)的地方,返回***個字符的位置,如果子串不存在,則返回-1??梢詫⑽恢脭?shù)(positionnumber)想象成找到此子串所經(jīng)過的字符。
my$where2=index($stuff,“w”,$where+1);#$where得到6,第三個參數(shù)給出了返回值的極小值。
你可能想知道某個子串***出現(xiàn)的位置??梢允褂胷index函數(shù)來做到,返回距離字符串頭的位置。
2、Perl語言中substr操作子串
substr只處理部分的字符串。$part=substr($string,$initial_position,$length);
一個字符串,一個從0開始編號的初始位置,以及子串的長度。返回值是一個子串。
如果請求的長度超過了字符串的長度,得到的是一個比你所希望的更短的結(jié)果。如果想明確要求到達字符串的結(jié)尾處,無論其或長或短,可以省略掉第三個參數(shù)。
初始位置可以是負的,表示從字符串結(jié)尾處開始(此時,-1表示***一個字符)
字符串中選擇的相應(yīng)位置是可以改變的:
my$string=“Hello,world!”;
substr($string,0,5)=“Goodbye”;#$string現(xiàn)在變成了“Goodbye,world!”
substr($string,-20)=~s/fred/barney/g;
susbtr:使用4個參數(shù),第四個參數(shù)是替換的字符串:
my$previous_value=substr($string,0,5,“Goodbye”);
3、Perl語言中sprintf
sprintf函數(shù)的參數(shù)和printf的參數(shù)完全相同(除了可選的文件句柄外),但它返回的是被請求的字符串,而非打印出來。這對于希望將某個格式的字符串存入變量以供將來使用的情況非常方便。
my$data_tag=sprintf“%4d/%02d/%02d%02d:%02d:%02d”,$yr,$mo,$da,$h,$m,$s;
$date_tag得到像“2038/01/193:00:08”這樣的值。格式化數(shù)字中的前置0的含義是,如果需要,在前面加上0,使之達到需要的寬度。
4、subbig_money
{
my$number=sprintf“%.2f”,shift@_;
1while$number=~s/^(-?\d+)(\d\d\d)/$1,$2/;#在do-nothing循環(huán)中,每一次加入一個逗號
$number=~s/^(-?)/$1\$/;#將美元符號放入合適的位置
$number;
}
5、Perl語言中高級排序
排序子程序返回一個值,表明這兩個元素如何比較的。如果在最終結(jié)果中$a出現(xiàn)在$b之前,則其排序子程序返回-1。如果$b出現(xiàn)在$a之前,則返回1。如果$a和$b的順序無關(guān)緊要,則子程序返回0。
subby_number{
if($a<$b){-1}elsif($a>$b){1}else{0}
}
要使用一個排序子程序,將它(不使用&)放在關(guān)鍵字sort和你要排序的列表之間。
my@result=sortby_number@some_numbers;許多的排序子程序的名字都由by_開頭,來描述如何排序
我們不需要在排序子程序中申明$a和$b,以及給它們設(shè)置。如果做了,子程序?qū)⒉荒艿玫秸_結(jié)果。我們讓Perl為我們給$a和$b賦值,我們只需要寫如何比較。
三向的比較數(shù)字操作符:太空船(spaceship)符號(<=>)。這個操作符比較兩個數(shù)字,按照數(shù)字將其排序,并返回-1,0,1。subby_number{$a<=>$b}
字符串的三向操作符:cmp
subcase_insenstive{“\L$a”cmp“\L$b”}大小寫無關(guān)的排序
當你的排序子程序像我們這里的那樣簡單時,你可以通過使用“inline”子程序來代替排序的名字,使之更簡單,如:my@numbers=sort{$a<=>$b}@some_numbers;在當代的Perl程序中,幾乎見不到獨立的排序子程序。
my@descending=reversesort{$a<=>$b}@some_numbers;按照數(shù)字的降序方式排序
my@descending=sort{$b<=>$a}@some_nubmers;按照數(shù)字的降序方式排序
6、hashes中使用sort時,只是對hash的keys排序(按照字母表順序排序)。現(xiàn)在我們將對hash的keys排序,其順序由其對應(yīng)的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字符串和排序怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。