[精讚] [會員登入]
6720

[PERL] split 寫法

Perl 將字串分開可以用 split 這個函數,此函數可以用Regex作分隔判斷

分享此文連結 //n.sfs.tw/10932

分享連結 [PERL] split 寫法@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-24 10:03:54 最後編修
2017-03-22 10:44:29 By 張○○
 

自動目錄

Perl 將字串分開可以用  split 這個函數,此函數可以用Regex作分隔判斷,功能滿強大的。

語法

split(/型別/, 字串);

範例

@s= split(/,/, '60,70,80');

也可以把 /,/ 寫成 ',' ,結果是一樣的:
@s= split( ',', '60,70,80');

要注意如果要分格的是一個點 '.' ,例如IP,直接寫會出錯

@s= split( '.', '61.72.38.90');

因為 '.' 在正規表達式中代表「任意一個字元」,所以要加上脫逸字元 '\'

@s= split( '\.', '61.72.38.90');

 

把每個字母拆開

如果直接用雙斜線來分隔 // 就會每個字元每個字元分開,不過遇到中文會變亂碼,英文和數字沒這個困擾。

$m="AND3 321";
@f = split( //, $m);
print $f[0];   #A

 

開頭有空白?

把字串用空白分隔的話,會因為開頭是空白而造成困擾。

$m=" dns; program; !slapd ";
@f = split( /\s+/, $m);
print $f[0];  # 空值


蛋的陣列買法

這時就要用空白一格的字元 ' ' 來代替 /\s/,因為 perl 對 ' ' 有特別的待遇

@f = split( ' ', $m);
print $f[0];  # dns

但是如果想用regex同時也要解決字串前空白的問題的話,就不能兩全其美,只好先用類似 ltrim() 的函數處理掉。但是perl 沒此函數,所以自己寫

$m =~ s/^\s+//;
@f = split( /\s+/, $m);
print $f[0];  # dns

 

結論

1. split 可用正規表達式超方便

2. 用空白一格' '取代\s可忽略字串前空白

3. 自己安trim 的函數也可以 [PERL] 自寫 trim, ltrim, rtrim 函數


原文  2009-11-16

END

你可能感興趣的文章

[PERL] 11- 雜湊的範例 Perl 的幾個雜湊範例

[PERL] 23-多執行緒 而多執行緒的程式,可在一次執行程式時間,同時進行多線程的計算,在效率上可獲得即大的提升。

[PERL] 取得字串長度 使用length來取得字串長度

[PERL] 08-陣列 #2 --操作 更多perl陣列的操作,如拆開、黏合、取出、加入等等

[PERL] 簡易檢查網頁記錄檔ip來源統計 利用PERL來檢查網頁記錄檔ip來源統計的簡易程式

[PERL] 前置if和後置if (if修飾子)的差別 perl的if可以拿來作為後置修飾子使用,此外還有一個unless像是if的相反,分析他們的差異

隨機好文

[bc] linux 的計算機 bc 設定小數位數、計算π、次方根 linux 的計算機 bc 設定小數位數、計算π、次方根

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

世紀帝國征服者新版本--被遺忘的帝國 世紀帝國征服者新版本--被遺忘的帝國 世紀二代的征服者是精典遊戲中的精典,aofe更好玩...

外匯課程經驗 有天遇到某個朋友的正妹朋友,說她有個很棒的外匯投資課程,要我們去聽,只收場地費200大洋。她又說續效最差一個月也有1%,誰還在苦哈哈上班?

APACHE的記錄檔格式 LogFormat 語法 在APACHE中有定義一些記錄的語法模版 在 /etc/httpd/conf/httpd.conf 中: LogForm