分享

Perl字符串处理(2)

 bigyellowdoc 2012-08-17


众所周知Perl处理字符串的功能非常强大,PerlPractical Extraction and Reporting language)处理格式的功能也非常强大。这节我们就开始学些Perl的格式和字符串处理。这些程序以后都可以直接拷贝使用,每段小程序以#隔开。

学习Perl推荐使用Perl IDE(功能虽然无法和VS 2005Eclipse 3.1那样功能那样强大),但是其支持断点处理功能,已经比直接使用命令行功能强大多了。

此免费软件的下载点:http://open-perl-ide./

其他Perl软件列表看此推荐:http://www./blog/p/perlidesumm.php

Perl格式处理

#1.format

format STDOUT=

@<<<<<<<<@||||||||@>>>>>> @.## @.######

$string1,$string2,$string3,$pi,$pi

.

$string1="zhang";

$string2="love";

$string3="chan";

$pi="3.1415926";

write;

##########

$display=1;

if($display)

{

$here= <<EOD;

zhang

bufeng

love

China .

EOD

print "$here\n";

}

########

$: ="";

format STDOUT=

Name:^<<<<<<<<<<

$person

Sex:^<<<

$person

Age:^<

$person

.

$person="zhangbufengmale23";

write;

########

format standformat_top=

@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

"Page $%"

Employees

FirstName LastName ID Extension

-----------------------------------------

.

format standformat=

@<<<<<<<<<<<@<<<<<<<<<<<@<<<<<<@<<<<<

$firstname $lastname $ID $extension

.

$firstname=" Cary ";

$lastname="Grant";

$ID="123";

$extension="x45";

open(FILEHANDLE,">>D:\\perlproject\\page.txt") or die("can't open this file");

select FILEHANDLE;

$~=standformat;

$^=standformat_top;

$==1;

for($loop=1;$loop<10;$loop++)

{

write;

}

Perl字符串处理

熟悉其最强大的三个函数:substrpackunpack

#大小写处理函数 lc(转为小写) uc(转为大写)

$text="ZhangBufeng";

$text2=lc $text;

$text3=uc $text;

print "$text2\n";

print "$text3\n";

#将第一字母变为小写(lcfirst),将第一个字母大写(ucfirst

$string="zhang";

$string2=lcfirst $string;

$string3=ucfirst $string;

print "$string2\n";

print "$string3\n";

#顺序查找string位置(index),逆序查找string位置(rindex

$string="zhang bu feng zhang bu feng";

$position1=index($string,"bu");

$position2=index($string,"bu",10);

$position3=rindex($string,"zhang");

$position4=rindex($string,"zhang",10);

print "$position1,$position2,$position3,$position4\n";

#获取子串函数substr,功能非常强大,可以直接支持以一个字符串代替字符串的一个子串。

#字符串处理的MVP

$text="Zhang bufeng ChanChan";

$replace_to="";

$replace_with="喜欢";

substr($text,index($text,$replace_to),length($replace_to),$replace_with);

print "$text\n";

#packunpack函数用于字符串的打包和解包,功能非常强大,支持多种打包格式

#字符串处理的MVP

$decimal=17;

$newdecimal=unpack("B32",pack("N",$decimal));

print "$newdecimal\n";

$string="张步峰爱中国";

@array1=unpack("c*",$string);

@array2=unpack("C*",$string);

print (join(",",@array1),"\n");

print (join(",",@array2),"\n");

$string1=pack("c*",@array1);

$string2=pack("C*",@array2);

print "$string1\n";

print "$string2\n";

#打印格式sprintf

$value=1234.56789;

print sprintf "%.4f\n",$value;

#字符串比较函数 eq,ne,cmp,lt,gt,le,ge.使用cmp就好。

$string1="步峰";

$string2="步峰";

if($string1 eq $string2)

{

print "$sting1==$string2\n";

}

if($string1 ne $string2)

{

print "$string1!=$string2\n";

}

if( ($string1 cmp $string2)==0)

{

print "$string1==$string2\n";

}

$string1="zhang";

$string2="chan";

if($string1 lt $string2)

{

print "left < right \n";

}

if($string1 gt $string2)

{

print "left > right \n";

}

if($string1 le $string2)

{

print "left < right \n";

}

if($string1 ge $string2)

{

print "left > right \n";

}

#

$string="张步峰爱中国";

@array=split(//,$string);#这种方法无法将其进行分成"","","","","",""等单字

print (join(",",@array),"\n");

#演示中文字符夹带英文字符的反序(使用了多个函数)

print "------begin-----\n";

$string1="中国love!张步峰";

@array=unpack("C*",$string1);

$length=$#array;#此数组的最后一个下标

for(;$length>=0;)

{

if($array[$length]<=128)

{

#英文或者标点

push(@array2,$array[$length]);

$length=$length-1;

}

else

{

#中文字符

push(@array2,$array[$length-1]);

push(@array2,$array[$length]);

$length=$length-2;

}

}

$string2=pack("C*",@array2);

print "$string2\n";

#

$dir=dir;

print qx/$dir/;

@name=qw/zhang bu feng chan chan/;

print join(",",@name);s

参考资料:《Perl 技术内幕》 Black Book Steven Holzner 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多