本文介绍两个perl字符处理函数,split函数与substr函数的使用。
split函数
Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。这个Perl split函数使用规则表达式(RE),如果未特定则工作在$_变量上。
split函数可以这样使用:
其结果是:@personal=("Caine","Michael","Actor","14,LeafyDrive");
如果我们已经把信息存放在$_变量中,那么可以这样:
如果各个域被任何数量的冒号分隔,可以用RE代码进行分割:
其结果是:@personal=("Capes","Geoff","Shotputter","BigAvenue");
但是下面的代码:
的结果是:@personal=("Capes","Geoff","","Shotputter","","","BigAvenue");
这个Perl split函数中单词可以被分割成字符,句子可以被分割成单词,段落可以被分割成句子:
在第一句中,空字符串在每个字符间匹配,所以@chars数组是一个字符的数组。>>
//之间的部分表示split用到的正则表达式(或者说分隔法则)
s是一种通配符,代表空格
+代表重复一次或者一次以上。
所以,s+代表一个或者一个以上的空格。
split(/s+/,$line)表示把字符串$line,按空格为界分开。
比如说,$line="你好朋友欢迎光临我的博客61dh.com";
split(/s+/,$line)后得到:
substr函数应用
在编写perl程序的时候,我们有时需要截取一个字符串中的部分内容,这个时候通常会使用Perl substr函数实现这个功能。
运行上面的程序,输出结果"testt",这个是我们想要的结果。再看看下面的程序:
这时候输出了一个"?",这显然不是我们想要的结果。因为在perl中,所有从外部输入的字符串(包括写在程序里的字符串)都会当成字节来处 理,"printsubstr($str,0,1);"这句话只是把"测试文本"的第一个字节取出来,并且用print输出,然而单个字节是不能表示一个 中文字符的,所以就输出了"?"。
如果想要上面的程序输出正确的结果,就需要使用decode函数把"测试文本"转换成perl内部字符串,让perl把"测试文本"当成字符串来处理,这样再用"substr($str,0,1);"截取的就不是一个字节,而是一个汉字。
substr函数的用法
指令:substr
语法:substr($string,offset,length)
offset代表起始字符的位置,length代表引用的字符串长度,如果省略length则代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话,就会从字符串右边开始指定字符。
示例: