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

看板Perl作者 (謝謝)時間4年前 (2020/05/09 10:08), 4年前編輯推噓0(003)
留言3則, 1人參與, 4年前最新討論串2/3 (看更多)
重新修改與精簡~ 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), 來自: 61.231.114.132 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1588990105.A.021.html ※ 編輯: luncha (61.231.114.132 臺灣), 05/09/2020 12:29:24

05/11 21:22, 4年前 , 1F
不用mod的話,覺得用 srintf "<%*s>" 類的似乎會好一點
05/11 21:22, 1F

05/11 21:22, 4年前 , 2F
05/11 21:22, 2F

05/11 21:24, 4年前 , 3F
如果有ascii以外的字元 unicode相關的mod也有能幫忙的
05/11 21:24, 3F
文章代碼(AID): #1UjX2P0X (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1UjX2P0X (Perl)