一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - perl - Perl split字符串分割函數用法指南

Perl split字符串分割函數用法指南

2020-06-08 10:45腳本之家 perl

本文向大家簡單介紹一下Perl split函數的用法,Perl中的一個非常有用的函數是Perl split函數-把字符串進行分割并把分割后的結果放入數組中

本文和大家重點討論一下Perl split函數的用法,Perl中的一個非常有用的函數是Perl split函數-把字符串進行分割并把分割后的結果放入數組中。這個Perl split函數使用規則表達式(RE),如果未特定則工作在$_變量上。

Perl split函數

Perl中的一個非常有用的函數是Perl split函數-把字符串進行分割并把分割后的結果放入數組中。這個Perl split函數使用規則表達式(RE),如果未特定則工作在$_變量上。

Perl split函數可以這樣使用: 
 

復制代碼 代碼如下:

$info="Caine:Michael:Actor:14,LeafyDrive"; 
@personal=split(/:/,$info); 



其結果是:@personal=("Caine","Michael","Actor","14,LeafyDrive");

 

◆如果我們已經把信息存放在$_變量中,那么可以這樣:

 

復制代碼 代碼如下:

@personal=split(/:/);

 

如果各個域被任何數量的冒號分隔,可以用RE代碼進行分割: 

復制代碼 代碼如下:

$_="Capes:Geoff::Shotputter:::BigAvenue"; 
@personal=split(/:+/); 

 

其結果是:@personal=("Capes","Geoff","Shotputter","BigAvenue");

但是下面的代碼:

 

復制代碼 代碼如下:

$_="Capes:Geoff::Shotputter:::BigAvenue"; 
@personal=split(/:/);

 

的結果是:@personal=("Capes","Geoff","","Shotputter","","","BigAvenue");

◆這個Perl split函數中單詞可以被分割成字符,句子可以被分割成單詞,段落可以被分割成句子:

 

復制代碼 代碼如下:

@chars=split(//,$word);
@words=split(//,$sentence); 
@sentences=split(/\./,$paragraph); 

 

在第一句中,空字符串在每個字符間匹配,所以@chars數組是一個字符的數組。>>

//之間的部分表示split用到的正則表達式(或者說分隔法則)
\s是一種通配符,代表空格
+代表重復一次或者一次以上。
所以,\s+代表一個或者一個以上的空格。
split(/\s+/,$line)表示把字符串$line,按空格為界分開。
比如說,$line="你好朋友歡迎光臨我的網站jb51.net";
split(/\s+/,$line)后得到:
你好朋友歡迎訪問我的網站jb51.net

一般用法: @somearray = split(/:+/, $string ); #括號可以不要。  若不指定$string, 則對默認變量$_操作, 兩斜線間為分割符,可以用正則表達式,強悍異常。

在perl手冊里,有一個用法不多見。即: split /PATTERN/, EXPR, LIMIT;  關鍵就是這個LIMIT參數,可以節省不少事情。 如果使用了LIMIT,且是正數,表示分割成不多于LIMIT指定的數目的域。If LIMIT is unspecified or zero, trailing null fields are stripped (which potential users of pop would do well to remember). If LIMIT is negative, it is treated as if an arbitrarily large LIMIT had been specified. Note that splitting an EXPR that evaluates to the empty string always returns the empty list, regardless of the LIMIT specified.

通過制定LIMIT,可以在很長(分割產生幾萬個元素or域)的行分割操作中,只返回關鍵的前幾列的域值,減少了內存使用及時間消耗。比如一般的基因型數據,第一列通常是材料命名,需要通過材料名的判斷取舍,這時候就可以這樣用。 my ($firstfield) = split /\t/, $someline, 1;  如果需要前面幾列的值,這樣的方式對大文件效率很好: my (undef, $var1, undef, undef, undef, $var2)=split /\t/, $someline, 6;

有網友對這種方式做了測試,顯示較好。引用如下:
>>>
一個文件,每行都有18項,各項之間用\t分割,使用時用到了第6項,折騰了幾種用法

 

復制代碼 代碼如下:

my @array = split("\t",$_); my $var = $array[6];   測試文件平均用時8.2s
 my($var) = (split("\t",$_))[6];  測試平均用時5.1s
 my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_); 平均用時3.53s
 my(undef,undef,undef,undef,undef,undef,$var) = split("\t",$_,7);平均用時3.52s
 my $var = (split("\t",$_,7))[6]; 平均用時3.53s

 

看來后3種才是王道,如果需要使用多項也可以進行進行適當的變動。不過兩項如果跨度比較大,3,4應該是不錯選擇,5就只能用中間數組。

自己動手測試下吧。

延伸 · 閱讀

精彩推薦
  • perlPerl List::Util模塊使用實例

    Perl List::Util模塊使用實例

    這篇文章主要介紹了Perl List::Util模塊使用實例,本文給出掃描符合條件的某個列表并取出第一個符合條件的、求1到1000之間的和 、求一組數字的最大值與最小...

    腳本之家4712020-06-22
  • perlPerl使用nginx FastCGI環境做WEB開發實例

    Perl使用nginx FastCGI環境做WEB開發實例

    這篇文章主要介紹了Perl使用nginx FastCGI環境做WEB開發實例,實現了路由系統和模板系統,需要的朋友可以參考下...

    Perl教程網2412020-06-18
  • perlperl命令行參數內建數組@ARGV淺析

    perl命令行參數內建數組@ARGV淺析

    這篇文章主要介紹了perl命令行參數內建數組@ARGV淺析,本文重點在于講解@ARGV的用法,并通過實例來說明,需要的朋友可以參考下 ...

    perl教程網6162020-06-18
  • perlPerl從文件中讀取字符串的兩種實現方法

    Perl從文件中讀取字符串的兩種實現方法

    有時候我們需要從文件中讀取字符串,這里簡單介紹下, 需要的朋友可以參考下 ...

    腳本之家6252020-06-08
  • perlPerl的經典用法分享

    Perl的經典用法分享

    Perl的經典用法分享,學習perl的朋友可以參考下 ...

    腳本之家6562020-06-06
  • perlperl use vars pragma使用技巧

    perl use vars pragma使用技巧

    perl 中的vars是perl中的一個pragma(預編譯指示符),專門用來預定義全局變量,這些預定義后的全局變量在qw()列表中,在整個引用perl文件中皆可使用,即便使...

    perl教程網6812020-06-16
  • perlperl pop push shift unshift實例介紹

    perl pop push shift unshift實例介紹

    perl的pop跟push操作數組的最右邊,shift跟unshift操作數組的最左邊 ...

    腳本之家4612020-06-10
  • perlperl常見問題集合之二

    perl常見問題集合之二

    哪些平臺上有 Perl?要到哪里去找? Perl的標準發行版(由 perl 發展小組負責維護)僅以原始碼形式發行。您可在 http: //www.perl.com/CPAN/src/latest.tar.gz處取得。這個檔...

    腳本之家2102020-05-29
主站蜘蛛池模板: www射com| 欧美亚洲国产另类 | 日本三级免费观看 | 日本漫画工囗全彩内番e绅 日本伦理动漫在线观看 | 国内精品视频免费观看 | 亚洲成人黄色 | 村妇超级乱淫伦小说全集 | 香蕉国产人午夜视频在线观看 | 午夜影视免费 | 娇妻与公陈峰姚瑶最新版 | 波多野结衣中文字幕乱七八糟 | 人生路不在线观看完整版 | 久青草国产97香蕉在线视频 | 欧美香蕉人人人人人人爱 | 亚洲成a人片777777久久 | 日本一区二区三区国产 | 91九色porny国产美女一区 | hd性欧美俱乐部中文 | 公交车上插入 | 国产成人高清精品免费观看 | eeuss18影院www国产 | 免费国产影视观看网站入口 | 欧美成人免费观看国产 | 华人在线京东热 | 午夜欧美福利视频 | 免费观看www视频 | 亚洲国产无线码在线观看 | 无码国产成人午夜在线观看不卡 | 免费观看欧美成人h | 亚洲精选在线观看 | 999精品视频这里只有精品 | 色欧美亚洲 | 国产麻豆剧果冻传媒影视4934 | 嫩交18xxxx| 皇上好大好硬好涨好深好爽 | 精品日本三级在线观看视频 | 亚洲 欧美 清纯 校园 另类 | 国产一级黄色网 | 欧美一区二区三区gg高清影视 | 特黄特色一级aa毛片免费观看 | 日本午夜vr影院新入口 |