Re: [問題] 文字元素的合成
最後我自己想出來了,雖然有點烙烙長
不過還是有得到正確的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
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章