perl中的字串操作函數chomp與chop介紹_perl

來源:互聯網
上載者:User

chomp與chop都是用於去除字串變數尾部的字元,但它們有各自的區別。

chomp函數對變數起作用,而此變數含有字串。如果字串結尾有分行符號,chomp可以去掉它。這基本上就是它能完成的所有功能,如下例:

複製代碼 代碼如下:

$text="alineoftext\n      "; #也可以由<STDIN>輸入
chomp($text);    #去掉分行符號(\n)。

它非常有用,基本上你的每一個程式都會用到它。如你將知道,這是將字串末尾分行符號去掉的最好方法。基於 Perl 中的一條基本原則:在需要使用變數的地方,可以使用賦值運算式來代替。我們有更簡單的使用 chomp 的方法。Perl 首先做賦值運算,再使用這個變數。因此使用 chomp 的最常用方法是:
複製代碼 代碼如下:

chomp($text=<STDIN>);    #讀入,但不含分行符號
$text=<STDIN>;
chomp($text);

#同上,但用兩步完成


第一眼見到時,第一種組合的方法看起來複雜些。如果把上述其看成兩步操作,讀一行再  chomp,那寫成兩個語句的方法看起來自然些。如果將其看作一個操作,讀入一行但不包括分行符號,那寫成一個語句的方法更恰當。由於絕大多數 Perl 程式員使用第一種寫法,你也應該使用它。

chomp 是一個函數。作為一個函數,它有一個傳回值,為移除的字元的個數。這個數字基本上沒什麼用:

複製代碼 代碼如下:

$food=<STDIN>;
$betty=chomp($food); #得到值 1

如上,在使用 chomp 時,可以使用或不使用括弧()。這又是 Perl 中的一條通用規則:除非移除它們時含義會變,否則括弧是可以省略的。如果結尾有兩個或兩個以上的分行符號,chomp 僅去掉一個。如果沒有,那什麼也不做,返回 0。這種情況在一次讀入一行時不會發生,但使用了輸入分隔字元(input  separator)($/)(其不為分行符號(\n)),read 函數,或者將一些字串結合起來就有可能發生。

在編寫Perl程式碼的時候,也許你會有時會用chop() 函數來去掉<>輸入的分行符號"\n",有時候使用chomp() 函數。其實上面的用法都可以達到預期的效果,但它們也有細微的差別。
 
chop()函數,只是去除最後一個字元。
chomp()函數,就要首先判斷最後一個字元是不是為"\n",它才去除。

chop函數會砍掉字串變數的最後一個字元,並返回砍掉的字元,chop函數不管字串裡是什麼都會剪短它,而chomp函數則更有選擇性一些。不能chop直接量,只能chop變數。
用法:

複製代碼 代碼如下:

chop VARIABLE
chop LIST
chop

例子:
如果chop一列LIST變數,那麼列表中的每個字串都會被剪短:
複製代碼 代碼如下:

@lines=`cat myfile`;
chop @lines;

在最常見的情況下,chop可以用substr來表示:
複製代碼 代碼如下:

$last_char = chop($var);
$last_char = substr($var, -1, 1, ""); # 同上

再來看下面的完整的例子:
複製代碼 代碼如下:

#!/usr/bin/perl
$string1 = "This is test";
$retval  = chop( $string1 );
print " Choped String is : $string1\n";
print " Character removed : $retval\n";

結果:
複製代碼 代碼如下:

Choped String is : This is tes
Number of characters removed : t

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.