split函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档