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

看板Perl作者 (謝謝)時間4年前 (2020/05/12 22:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
感謝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
文章代碼(AID): #1Ukh7BBL (Perl)
文章代碼(AID): #1Ukh7BBL (Perl)