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