perl split用法是什么?

perl split用法是什么?,第1张

Perl split函数\x0d\x0aPerl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中。这个Perl \x0d\x0asplit函数使用规则表达式(RE),如果未特定则工作在$_变量上。\x0d\x0aPerl split函数可以这样使用: \x0d\x0a$info="Caine:Michael:Actor:14,LeafyDrive" \x0d\x0a@personal=split(/:/,$info) \x0d\x0a其结旦粗果是:@personal=("Caine","Michael","Actor","14,LeafyDrive")\x0d\x0a◆如果我们已经把信息存放在$_变量中,那么可以这样:\x0d\x0a@personal=split(/:/)\x0d\x0a如果各个域被任何数量的冒号分隔,可以用RE代码进行分割: \x0d\x0a$_="Capes:Geoff::Shotputter:::BigAvenue" \x0d\x0a@personal=split(/:+/) \x0d\x0a其结果是:模饥镇@personal=("Capes","Geoff","Shotputter","BigAvenue")\x0d\x0a但是下面的代码:\x0d\x0a$_="Capes:Geoff::Shotputter:::BigAvenue" \x0d\x0a@personal=split(/:/) \x0d\x0a的结果是:@personal=("Capes","Geoff","","Shotputter","","","BigAvenue")\x0d\x0a◆这个Perl split函数中单词可以被分割成字符,句子可以被分割成单词,段落可以被分割成句子:\x0d\x0a@chars=split(//,$word) \x0d\x0a@words=split(//,$sentence) \x0d\x0a@sentences=split(/\./,$paragraph) \x0d\x0a在第一句中,空字符串在每个字符间匹配,所以@chars数组是一个字符的数组。>>\x0d\x0a//之间的部分表示split用到的正则表达式(或者说分隔法则)\x0d\x0a\s是一种通配符,代表空格\x0d\x0a+代表重复一次或者一次以上。\x0d\x0a所以,\s+代表一个或者一个以上的空格。\x0d\x0asplit(/\s+/,$line)表示把字符串$line,按空格为肢帆界分开。

 纳拿my @data = split/\s+/,$line

表示用洞链搭1个或多个空【包括空格,Tab……】分割$line,分割后的内容放入数组data

由于文件每一“列”指的也是用空格、Tab分开的字段

打印data[0]  就是输出第一个字段(第一列)。data[1]就是第二个字段唤搭(第二列)……

嘿,

首先得说一句,

你这本书译得真恶心..

我半句都没看得明白.

split

很简单,

首先就是在一条字串中,

找出匹配的地方,

并将之

"取代"

"切割点".

然後从这切割点进行真正的切割并备.

但回传给你的数组中,

将会从尾到头地消掉没有值的元素,

直到(从尾到头)发现第一个有值的元素.

这是

split

预设的行为(因为多数人都这麼做就够).

但这有好模芦,

也有不好,

假如我读的是一个

csv

档,

姓名

电话

地址...

备注1,

备注2

等等有9个列,

而你想确保读到

9

个(已知的)元素回来,

那麼如果後面的备注1,

备注2为空,

那麼你的数组只会有

7

个元素返回来,

这时,

你就旦蔽带会用得上

split

的第

3

个参数.

@fields

=

split

/:/,

":::a:b:c:::"

print

"<$_>"

foreach

@fields

print

$/

@fields

=

split

/:/,

":::a:b:c:::",

9

print

"<$_>"

foreach

@fields

#

这时就会有

9

个元素返回来


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12251996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存