国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Perl > 正文

perl中的字符串操作函數(shù)chomp與chop介紹

2020-10-31 15:05:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

chomp與chop都是用于去除字符串變量尾部的字符,但它們有各自的區(qū)別。

chomp函數(shù)對(duì)變量起作用,而此變量含有字符串。如果字符串結(jié)尾有換行符,chomp可以去掉它。這基本上就是它能完成的所有功能,如下例:

復(fù)制代碼 代碼如下:

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

它非常有用,基本上你的每一個(gè)程序都會(huì)用到它。如你將知道,這是將字符串末尾換行符去掉的最好方法。基于 Perl 中的一條基本原則:在需要使用變量的地方,可以使用賦值表達(dá)式來(lái)代替。我們有更簡(jiǎn)單的使用 chomp 的方法。Perl 首先做賦值運(yùn)算,再使用這個(gè)變量。因此使用 chomp 的最常用方法是:
復(fù)制代碼 代碼如下:

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

#同上,但用兩步完成


第一眼見(jiàn)到時(shí),第一種組合的方法看起來(lái)復(fù)雜些。如果把上述其看成兩步操作,讀一行再  chomp,那寫成兩個(gè)語(yǔ)句的方法看起來(lái)自然些。如果將其看作一個(gè)操作,讀入一行但不包括換行符,那寫成一個(gè)語(yǔ)句的方法更恰當(dāng)。由于絕大多數(shù) Perl 程序員使用第一種寫法,你也應(yīng)該使用它。

chomp 是一個(gè)函數(shù)。作為一個(gè)函數(shù),它有一個(gè)返回值,為移除的字符的個(gè)數(shù)。這個(gè)數(shù)字基本上沒(méi)什么用:

復(fù)制代碼 代碼如下:

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

如上,在使用 chomp 時(shí),可以使用或不使用括號(hào)()。這又是 Perl 中的一條通用規(guī)則:除非移除它們時(shí)含義會(huì)變,否則括號(hào)是可以省略的。如果結(jié)尾有兩個(gè)或兩個(gè)以上的換行符,chomp 僅去掉一個(gè)。如果沒(méi)有,那什么也不做,返回 0。這種情況在一次讀入一行時(shí)不會(huì)發(fā)生,但使用了輸入分隔符(input  separator)($/)(其不為換行符(/n)),read 函數(shù),或者將一些字符串結(jié)合起來(lái)就有可能發(fā)生。

在編寫Perl程序代碼的時(shí)候,也許你會(huì)有時(shí)會(huì)用chop() 函數(shù)來(lái)去掉<>輸入的換行符"/n",有時(shí)候使用chomp() 函數(shù)。其實(shí)上面的用法都可以達(dá)到預(yù)期的效果,但它們也有細(xì)微的差別。
 
chop()函數(shù),只是去除最后一個(gè)字符。
chomp()函數(shù),就要首先判斷最后一個(gè)字符是不是為"/n",它才去除。

chop函數(shù)會(huì)砍掉字符串變量的最后一個(gè)字符,并返回砍掉的字符,chop函數(shù)不管字符串里是什么都會(huì)剪短它,而chomp函數(shù)則更有選擇性一些。不能chop直接量,只能chop變量。
用法:

復(fù)制代碼 代碼如下:

chop VARIABLE
chop LIST
chop

例子:
如果chop一列LIST變量,那么列表中的每個(gè)字符串都會(huì)被剪短:
復(fù)制代碼 代碼如下:

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

在最常見(jiàn)的情況下,chop可以用substr來(lái)表示:
復(fù)制代碼 代碼如下:

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

再來(lái)看下面的完整的例子:
復(fù)制代碼 代碼如下:

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

結(jié)果:
復(fù)制代碼 代碼如下:

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 钦州市| 元朗区| 天峨县| 延川县| 奉贤区| 伽师县| 奈曼旗| 桑植县| 南投市| 涡阳县| 西城区| 大港区| 崇左市| 清镇市| 安平县| 龙井市| 安国市| 沙湾县| 屯留县| 哈密市| 红安县| 叶城县| 砚山县| 定安县| 二手房| 资溪县| 绥德县| 攀枝花市| 长宁区| 敖汉旗| 通城县| 根河市| 建德市| 自贡市| 牙克石市| 鄂尔多斯市| 旬阳县| 自贡市| 澄江县| 玛多县| 遵义县|