Re: [請益] 字串拼接的方式
感謝flu大建議,使用sprintf,能讓程式更簡單明確
修改後的程式:
my $FLOW;
my @Array=();
s/(\)\s+\;)+?|\?|\:/=/g;
@Array = split(/\=/, $_);
for(@Array)
{
s/^\s+|\s+$//g;
$Array[1] =~ s/\s+//g;
$Array[1] =~ s/,/, /g;
}
$FLOW= sprintf "%-25s? $-40s: %-50s ); %s ",$Arry[0],$Arry[1],$Arry[2],$Arry[3];
※ 引述《luncha (謝謝)》之銘言:
: 重新修改與精簡~
: my $FLOW;
: my @Array=();
: s/(\)\s+\;)+?|\?|\:/=/g;
: @Array = split(/\=/, $_);
: for(@Array)
: {
: s/^\s+|\s+$//g;
: $Array[1] =~ s/\s+//g;
: $Array[1] =~ s/,/, /g;
: }
: $blank0 = " "x(25 - length(Array[0]));
: $blank1 = " "x(32 - length(Array[1]));
: $blank2 = " "x(50 - length(Array[2]));
: $FLOW = "$Array[0]$blank0 ? $Array[1]$blank1 : $Array[2]$blank2 ); $Array[3]
: ";
: ※ 引述《luncha (謝謝)》之銘言:
: : 各位大大,目前要處理字串重新排列的問題
: : 透過split+substr,能夠完成,但是$FLOW宣告的方式有點怪,
: : 想了解有沒有更好的寫法呢? 謝謝
: : <以下是字串與code內容:>
: : =====字串======
: : OPEN_SHORT ? : #C(hw_fail_1, sw_fail_1 ) ; //AA
: : MBIST ? : #C(hw_fail_2, sw_fail_2 ) ;//BB
: : last_item? #C(pass, pass) : #C(hw_fail_3, sw_fail_3 ) ;
: : =====執行程式的輸出=====
: : OPEN_SHORT ? : #C(hw_fail_1, sw_fail_1 );//AA
: : MBIST ? : #C(hw_fail_2, sw_fail_2 );//BB
: : last_item ? #C(pass, pass) : #C(hw_fail_3, sw_fail_3 );
: : =====程式=====
: : my $FLOW=" ";
: : my @Array=();
: : $FLOW =~ s/\)\s+\;/=/g;
: : $FLOW =~ s/\?|\:/=/g;
: : @Array = split(/\=/, $FLOW);
: : $Array[0] =~ s/\s+//g;
: : $Array[1] =~ s/^\s+|\s+$//g;
: : $Array[1] =~ s/\(\s+/(/g;
: : $Array[1] =~ s/(\w+)$/$1)/g;
: : $Array[2] =~ s/^\s+|\s+$//g;
: : $Array[3] =~ s/^\s+|\s+$//g;
: : substr($FLOW, 0,0) = "Array[0]";
: : substr($FLOW, 16,0) = "? Array[1]";
: : substr($FLOW, 31,0) = ": Array[2]";
: : substr($FLOW, 56,0) = ");Array[3]";
: : print $FLOW;
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.137.214 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1589293515.A.2D5.html
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章