實(shí)例解析Perl substr函數(shù)應(yīng)用
本文和大家重點(diǎn)討論一下Perl substr函數(shù)應(yīng)用,在編寫(xiě)perl程序的時(shí)候,我們有時(shí)需要截取一個(gè)字符串中的部分內(nèi)容,這個(gè)時(shí)候通常會(huì)使用substr函數(shù)實(shí)現(xiàn)這個(gè)功能。
Perl substr函數(shù)應(yīng)用
在編寫(xiě)perl程序的時(shí)候,我們有時(shí)需要截取一個(gè)字符串中的部分內(nèi)容,這個(gè)時(shí)候通常會(huì)使用Perl substr函數(shù)實(shí)現(xiàn)這個(gè)功能。
- viewplaincopytoclipboardprint?
- $str="testtest";
- printsubstr($str,0,5);
- $str="testtest";
- printsubstr($str,0,5);
運(yùn)行上面的程序,輸出結(jié)果"testt",這個(gè)是我們想要的結(jié)果。再看看下面的程序:
- viewplaincopytoclipboardprint?
- $str="測(cè)試文本";
- printsubstr($str,0,1);
- $str="測(cè)試文本";
- printsubstr($str,0,1);
這時(shí)候輸出了一個(gè)"?",這顯然不是我們想要的結(jié)果。因?yàn)樵趐erl中,所有從外部輸入的字符串(包括寫(xiě)在程序里的字符串)都會(huì)當(dāng)成字節(jié)來(lái)處理,"printsubstr($str,0,1);"這句話只是把"測(cè)試文本"的***個(gè)字節(jié)取出來(lái),并且用print輸出,然而單個(gè)字節(jié)是不能表示一個(gè)中文字符的,所以就輸出了"?"。
如果想要上面的程序輸出正確的結(jié)果,就需要使用decode函數(shù)把"測(cè)試文本"轉(zhuǎn)換成perl內(nèi)部字符串,讓perl把"測(cè)試文本"當(dāng)成字符串來(lái)處理,這樣再用"substr($str,0,1);"截取的就不是一個(gè)字節(jié),而是一個(gè)漢字。
◆下面看一下Perl substr函數(shù)的用法:
指令:substr
語(yǔ)法:substr($string,offset,length)
offset代表起始字符的位置,length代表引用的字符串長(zhǎng)度,如果省略length則代表從起始值到字符串的***一個(gè)字符長(zhǎng)度。而offset如果是負(fù)值的話,就會(huì)從字符串右邊開(kāi)始指定字符。
示例:
- $s=substr("perl5",2,2);#這時(shí)$s="rl";
- $s=substr("perl5",2);#這時(shí)$s="rl5";
- $s=substr("perl5",-2,2);#這時(shí)$s="er";
【編輯推薦】
- Perl函數(shù)參數(shù)中傳遞數(shù)組和引用的使用
- 全面認(rèn)識(shí)Perl進(jìn)程處理函數(shù)
- 學(xué)習(xí)筆記 Perl grep函數(shù)使用揭秘
- 學(xué)習(xí)筆記 Perl split函數(shù)用法指導(dǎo)
- Perl多進(jìn)程及其和多線程的關(guān)系解析

















