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

楼主: luncha (谢谢)   2020-05-12 22:25:12
感谢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;

Links booklink

Contact Us: admin [ a t ] ucptt.com