看板 Perl 關於我們 聯絡資訊
看輸入的形式 我假設同pin一定排在一起 而且裡面的數字一定降冪 如果不是 也可以寫個sort排一下 應該沒幾行 然後就照前面c大的說法來寫 寫成這樣 my $str = 'A, B, C[1], C[0], D, P[3], P[2], P[1],'; my @arr = split /, */, $str; my (@out, @bus); sub bus_out { return unless @bus; push @out, "[$bus[1]:$bus[2]] $bus[0]"; @bus = (); } for (@arr) { if (/(\w+)\[(\d+)\]/) { @bus ? ($bus[2] = $2) : (@bus = ($1, $2, $2)); } else { bus_out; push @out, $_; } } bus_out; print "$_;\n" for (@out); 要寫得乾淨比我想像中還難 沒幾行卻寫了好久 orz -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.121.196 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1556305957.A.993.html
cutekid: 把 D 刪掉,答案好像會錯 04/27 08:46
AntaresStar: 啊真的 半夜寫code果然bug一堆 哈哈哈 04/27 09:59
pat12345: XDDD 04/27 10:17