split函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
split函数
本文和大家重点讨论一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。这个Perl split函数使用规则表达式(RE),如果未特定则工作在$_变量上。
Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。这个Perl split函数使用规则表达式(RE),如果未特定则工作在$_变量上。
在第一句中,空字符串在每个字符间匹配,所以@chars数组是一个字符的数组。>> //之间的部分表示split用到的正则表达式(或者说分隔法则)
\s是一种通配符,代表空格
+代表重复一次或者一次以上。
所以,\s+代表一个或者一个以上的空格。
split(/\s+/,$line)表示把字符串$line,按空格为界分开。
语法
定义和用法
将一个字符串表达式,到指定的分隔符PATTERN基础上的字段。如果没有指定模式,默认是空白。LIMIT为一个可选的限制,限制返回的元素的数量。一个负的限制具有相同的效果,因为没有限制。经常使用此功能结合使用join()来创建小的文本数据库。
返回值
∙返回值在标量上下文中:不建议,但它返回的字段和存储的字段在@_数组中。
∙返回值在数组环境中:EXPR或$_如果没有指定表达式的字段列表。
例子1:split的第三参数的使用方法,1)为-1时,表示不省略后面的空字符;2)为1时,表示把整体输出,即不分割;3)为2,3...n 时,就把字符串按前面的最初n-1个分隔字符分成n段,最后剩余的全存到最后一个元素里。具体看下面例子:
my @fields = split /:/, ":::a:b:c:::";#(“”, “”, “”, “a”, “b”, “c”)print "结果:",$#fields,"\n";#输出结果是5
my @field = split /:/, ":::a:b:c:::",-1;#(””, “”, “”, “a”, “b”, “c”,””,””,””)print "结果:",$#field,"\n";#结果为8
my @field = split /:/, ":::a:b:c:::",1;
print "结果3:",$#field,”\t”,$field[0],"\n";#结果为0和:::a:b:c:::
my @field = split /:/, ":::a:b:c:::",2;
print "结果4:",$#field,"\n";#结果为1,即数组有两个元素
my @field = split /:/, "sddf:a:b:c:::",2;
print "结果5:",$field[0],"\t",$field[1],"\n";#结果分别为“sddf”和“a:b:c:::”。
上例证明:split的第三参数为-1时,就保留了后面的空字符
注意:数组索引是从0开始。
从结果5可知,字符串在第一个“:”处被隔断,前一部分存在第一
个元素,后面全部一起存在第二个元素,从这以此类推第三参数为3,4或5...n等时,就把字符串按前面的最初n-1个分隔字符分成n 段,最后剩余的全存到最后一个元素里。
例子 2.以字符串做分割符,如果两个分割字符串部分重叠,则以前面的为准,即按前面一个分割,自然后面一个被破坏,也就不能按照后面一个分割了。如下例:
my @fields = split /gcfg/, "dssgcfgcfgddfgcfgcfg";
foreach (0 ... $#fields){
print "第",$_,"个元素为:",$fields[$_],"\n";
}
结果:第0个元素为:dss
第1个元素为:cfgddf
第2个元素为:cfg
例子3. 字符串变量的方括号也可作为正则表达式中的方括号
my @fields = split /[gdacfs]cfg/, "dssacfgcfgddfscfgddfddcfggghh";
foreach (0 ... $#fields){
print "第",$_,"个元素为:",$fields[$_],"\n";
}
结果:
第0个元素为:dss
第1个元素为:cfgddf
第2个元素为:ddfd
第3个元素为:gghh
例子4.字符串变量的括号也可作为正则表达式中的括号
my $bian="wo(.+?)d";
my $liang="sdsdaswoainidkk";
$liang=~/$bian/;
print $1,"\n";
结果:aini
例子5.split还可以返回特定索引的元素
my ($ver1,$ver2,$ver3)=(split /:/,"字符串0: 字符串1: 字符串2: 字符串3: 字符串4: 字符串5")[0,2,5];
那么得到:$ver1=字符串0;$ver2=字符串2;$ver3=字符串5;