Perl 字串擷取函式substr

2021-07-22 18:00:37 字數 1007 閱讀 2193

在編寫perl程式的時候,我們有時需要擷取乙個字串中的部分內容。

這個時候通常會使用

substr

函式實現這個功能。

函式引數:

substr(待擷取字串,擷取起始位置,擷取終了位置);

view plaincopy to clipboardprint?

$str="testtest"; 

print substr($str,0,5); 

$str="testtest";

print substr($str,0,5);

執行上面的程式,輸出結果"testt",這個是我們想要的結果。再看看下面的程式:

view plaincopy to clipboardprint?

$str="測試文字"; 

print substr($str,0,1); 

$str="測試文字";

print substr($str,0,1);

這時候輸出了乙個"?",這顯然不是我們想要的結果。因為在perl中,所有從外部輸入的字串(包括寫在程式裡的字串)都會當成位元組來處理,"print substr($str,0,1);"這句話只是把"測試文字"的第乙個位元組取出來,並且用print輸出,然而單個位元組是不能表示乙個中文字元的,所以就輸出了"?"。

如果想要上面的程式輸出正確的結果,就需要使用decode函式把"測試文字"轉換成perl內部字串,讓perl把"測試文字"當成字串來處理,這樣再用"substr($str,0,1);"擷取的就不是乙個位元組,而是乙個漢字。

view plaincopy to clipboardprint?

use encode; 

$str=decode('gbk',"測試文字"); 

print encode('gbk',substr($str,0,1)); 

use encode;

$str=decode('gbk',"測試文字");

print encode('gbk',substr($str,0,1));

字串擷取函式

英文及數字擷取函式 substr 函式返回字串的一部分,但要分割的文字如果包括中文字元往往會遇到問題。substr string,start,length 例子 rest substr abcdef 1 returns bcdef 從位置為1的字元向後擷取到字串尾 rest substr hello...

字串擷取函式

此字串擷取函式可以的到字串中兩個標誌之間的一段字串 如 123 456 789 可以得到指定123,456,789,123 456,456 789等字串 include include char get str betw head tail char a,int c,int head,int tai...

Delphi 字串擷取函式

如果要使用leftstr,rightstr,midstr必需引用系統單元strutils 宣告變數str string str helloworld 1,leftstr str,2 he 從str字串變數的最左邊 第乙個字元包括第乙個字元 開始擷取2個字元 2,rightstr str,2 ld 從...