Re: [請益] 字串拼接的方式

作者: luncha (謝謝)   2020-05-09 10:08:20
重新修改與精簡~
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;
作者: flu (Crazy Rhythm)   2020-05-11 21:22:00
不用mod的話,覺得用 srintf "<%*s>" 類的似乎會好一點或者 http://p3rl.org/perlform如果有ascii以外的字元 unicode相關的mod也有能幫忙的

Links booklink

Contact Us: admin [ a t ] ucptt.com