看板 Perl 關於我們 聯絡資訊
最後我自己想出來了,雖然有點烙烙長 不過還是有得到正確的output,分享給大家, 兩個重點 1. 用迴圈先把有[]的做分類 2. 用計數器判斷C 或 P 出現了幾次 cnt < 1 , 取C 或 P 就好 cnt > 1 ,取元素 ----------------------- $str = 'A, B, C[1], C[0], D, P[3], P[2], P[1],'; $str1 = ""; @arr1 = split (' ',$str); $cnt = 0; $pin_1st = $1 if ( @arr1[0] =~ /^(\w+)/ ); foreach (@arr1) { if ($_ =~ /(\w+)(\[\d+\])/) { $pin1 = $1; $bus1 = $2; if ( $pin1 eq $pin1_pre ) { $cnt = $cnt +1; } else { $cnt = 1; } if ($cnt<2) { $str1 = "$str1"." $pin1,"; } $str1 = "$str1"."$bus1"; $pin1_pre = $pin1; } elsif ( $_ =~ /(\w+)/ ){ $pin2 = $1; $str1 = "$str1"." $pin2,"; } } @arr2 = split (' ',$str1); foreach (@arr2) { if ( $_ =~ /\[/) { $pin3 = $1 if ($_ =~ /(\w+)/); $bus2 = $1 if ($_ =~ /\[(\d+)/); $bus3 = $1 if ($_ =~ /(\d+)\]$/); print "\[$bus2:$bus3\] $pin3;\n"; } else { $pin4 = $1 if ($_ =~ /(\w+)/); print "$pin4;\n"; } } ---------------------------------------------- ※ 引述《pat12345 (咖啡杯)》之銘言: : 大家好,我是perl初學者, : 我想把以下的文字做換列的轉換, : 難的地方是帶括號的, : 想請大家給我一些建議, : 感激不盡~~ : input: : A, B, C[1], C[0], D, P[3], P[2], P[1], : output: : A; : B; : [1:0] C; : D; : [3:1] P; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.87.183 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1556024853.A.633.html