Re: [問題] 長度固定的寫法..(perl/php皆可)

作者: squalll (追求夢想~)   2011-10-02 07:44:53
沒想到還會回來回這一篇....
最近才發現這樣寫有些資料有問題
因為資料欄位中不一定會有資料,
最後一個欄位如果是空白的話這樣輸出就會錯誤
12345a345cd2187ankjdkj219zxnmzxn2109890
123 j12345mc1235987ccccc aaaaxxxxxxx
12344123222 123ascv
這樣到第三筆輸出的時候會變得很奇怪
預期應該會變成
12345,a345cd,2187ankjdkj219,zxnmzxn,2109890
123 ,j12345,mc1235987ccccc, aaaa,xxxxxxx
12344,123222,,123ascv,
但是實際上第三筆資料會變成
12344123222,123ascv之類的..
我的REGEXP目前是這樣寫
foreach $thing (@list){
$thing =~ s/(.{5})(.{6})(.{7})(.{8})(.{9})/$1,$2,$3,$4,$5/;
....
}
主要應該是因為s/match一串非空白字元,並以找到的字串為結尾
所以當我最後一欄資料為空白的時候就會發生錯誤了
不知道有沒有人遇過類似的問題? 該如何解決呢
我的資料是連續的..該怎麼寫才可以取出度定長度的值(包含空白)
謝謝m(_ _)m
※ 引述《squalll (放逐?)》之銘言:
: 有一堆連續的資料
: 12345 a345cd 2187ankjdkj219 zxnmzxn 2109890
: 123 j12345 mc1235987ccccc aaaa xxxxxxx
: 中間有空白分隔,不過因為長度都固定,想問取固定長度的regular怎麼寫呢
: 希望能轉換成這樣,第一欄就固定取長度五個,第二欄六個,第三欄14個..之類的!
: 輸出結果:
: 12345,a345cd,2187ankjdkj219,zxnmzxn,2109890
: 123 ,j12345,mc1235987ccccc, aaaa,xxxxxxx
: 謝謝大家 :)
作者: bibo9901 (function(){})()   0000-00-00 00:00:00
長度固定的話用substr不就好了嗎?
作者: godspeedlee (妳,我可以)   0000-00-00 00:00:00
上一篇第一行有空白分隔,這次又沒有?:P

Links booklink

Contact Us: admin [ a t ] ucptt.com