我有一個字符串,由製表符分隔幾個部分:如何將一個字符串拆分爲只有兩個部分的Perl?
Hello\t2009-08-08\t1\t2009-08-09\t5\t2009-08-11\t15
我想這只是第一個選項卡上的分裂,在$k
讓「你好」結束了和和休息$v
結束。這並不奏效:
my ($k, $v) = split(/\t/, $string);
我該怎麼做?
我有一個字符串,由製表符分隔幾個部分:如何將一個字符串拆分爲只有兩個部分的Perl?
Hello\t2009-08-08\t1\t2009-08-09\t5\t2009-08-11\t15
我想這只是第一個選項卡上的分裂,在$k
讓「你好」結束了和和休息$v
結束。這並不奏效:
my ($k, $v) = split(/\t/, $string);
我該怎麼做?
爲了得到這一點,你需要使用第三個參數來split()
,這給函數域的最大數量分裂成(如屬正數):
my($first, $rest) = split(/\t/, $string, 2);
如果數值的長度不確定,我想用$ v捕獲所有數據。 $ V的格式將會是什麼樣DATE_1 \ tvalue_1 \ tdate_2 \ tvalue_2 \ tdate_3 \ tvalue_3 ... – biznez 2009-09-11 18:37:21
這將在$捕獲$ K 「DATE_1」 和 「_1 \ tdate_2 \ tvalue_2 \ tdate_3 \ tvalue_3 ......」訴有關更多信息,我將鏈接到'split()'函數的perldoc參考頁面 - 它將解釋它如何在您想要的所有細節中工作。我建議你閱讀它。 Perldoc的信息非常豐富。 – 2009-09-11 18:39:28
號它會給你前兩項和其餘的折騰。試試這個:
my ($k, $v) = split(/\t/, $string, 2);
如果數值的長度不確定,我想以$ v的形式捕獲所有數據。 $ V的格式將會是什麼樣DATE_1 \ tvalue_1 \ tdate_2 \ tvalue_2 \ tdate_3 \ tvalue_3 ... – biznez 2009-09-11 18:36:44
像克里斯·魯茨在他的評論說,這個數字告訴Perl多少部分分成。因此,值爲2時,第一部分以$ v爲單位,第一部分在分割中消耗,剩下的字符串不會變爲$ v。 – 2009-09-11 18:44:28
另一種選擇是使用簡單的正則表達式。
my($k,$v) = $str =~ /([^\t]+)\t(.+)/;
其實,我剛剛閱讀文檔split(),被困惑;用Google搜索,然後來到這裏。我在哪裏找到答案。 – Chap 2013-01-25 06:10:02