Re: [問題] 同一行上字串的處理

看板Perl作者 (可愛中央處理器)時間16年前 (2008/12/28 12:53), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串2/3 (看更多)
#!/usr/bin/perl $_='aa#apple;inquire;keep/bb#about;abc;grammar;new;englsih'; s/(#|;)/'@'.($i=($1 eq '#' ? 1:$i+1))/ge; print; ※ 引述《Austin9 (奧斯丁)》之銘言: : 不好意思,想請問一下同一行字串的處理 : 現在有一組字串如下 : $test=aa#apple;inquire;keep/bb#about;abc;grammar;new;englsih; : 想將它改成為 : aa@1apple@2inquire@3keep/bb@1about@2abc@3grammar@4new@5englsih : 我的寫法為先將#號都改成@1,但是";"這部份就有困難了,我用reg方 : 式去判斷結果是一直累加下去,變成如下 : aa@1apple@2inquire@3keep/bb@1about@4abc@5grammar@6new@7englsih : $ECounter = 2; : if (/#/) { : s/#/@.1/ge; : if (/\@1/) { : $ECounter = 2; : s/;/@.$ECounter++/ge; : print ; : } : } : 這樣看起來,好像它會並不會去判斷後面的東西,而是直接replace,有方法 : 可以利用reg且還可以在同一行進行判斷嗎?謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.60.234

12/28 14:11, , 1F
s/([#;])/'@' . ($1 eq '#' ? $i = 1 : ++ $i)/ge
12/28 14:11, 1F

12/28 14:12, , 2F
效果一樣...
12/28 14:12, 2F

12/29 00:03, , 3F
感謝各位大大的指導,謝謝。
12/29 00:03, 3F

12/29 19:51, , 4F
原來還可以這樣用~~
12/29 19:51, 4F
文章代碼(AID): #19LmPMgJ (Perl)
文章代碼(AID): #19LmPMgJ (Perl)