Re: [問題] 判斷與取代已刪文

看板Perl作者 (Neisseria)時間10年前 (2014/06/30 22:23), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/3 (看更多)
提供某一種解法,參考看看... 假設一個雜湊 %replace_list,裡面放的是字母和數字的對應 即 a=1 b=2 c=3 ... 寫一個函數來替換字母,在轉換前,先將字母轉小寫 sub replace_abc_123 { my $string = shift; my $output = ""; for my $e (split //, $string) { if ($e =~ /[[:alpha:]]/) { $output .= $replace_list{lc $e}; } else { $output .= $e } } return $output; } 然後用常規表示式將要替換的地方抓出來 用剛寫好的函數來替換掉即可 完整的例子可看連結 http://pastebin.com/Cf9Pk1hV 參考看看囉 ※ 引述《sosojopoor (KeiDanX)》之銘言: : 各位板上前輩大家好 : 小弟我剛接觸perl有些問題想請教 : 主要是判斷&取代的問題 : -----------原始碼----------- : (port I0 (direction INPUT)) : (instance (rename ABC_1def "CBA.gh3") (viewRef X) : (portRef I0 (instanceRef ABC_1def)) : (portRef I1 (instanceRef iJk_1def)) : (port LO (direction OUTPUT)) : (portRef O (instanceRef ABC_1def)) : -----------判斷&修改後----------- : (port I0 (direction INPUT)) : (instance (rename 123_1456 "321.783") (viewRef X) : (portRef I0 (instanceRef 123_1456)) : (portRef I1 (instanceRef 901_1456)) : (port LO (direction OUTPUT)) : (portRef O (instanceRef 123_1456)) : 有兩個關鍵字分別為"rename"和"instanceRef" : 1.rename : 判斷到有rename後將第一個與第二個空白鍵中的a-Z換成數字 : 若超過9則為0 也就是a/A=1 b/B=2 ... i/I=9 j/J=0 : 同時隨後兩個"內的字串依照上述取代 : 2.instanceRef : 判斷到有rename後將第一個空白鍵與第一個)內的a-Z換成數字 : 取代的規則與前述相同 : 嘗試使用if判斷與tr : 但一直卡在只取代 第一與第二個空白鍵內的a-Z 這邊 : 請問有人知道該如何處理嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.104.122.113 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1404138234.A.7A9.html

07/06 10:35, , 1F
抱歉現在才回 感謝N大 問題解決90%了!
07/06 10:35, 1F

07/06 12:22, , 2F
另外的 10% 也是要寫 Perl 解決嗎? 另開一篇文章來看看
07/06 12:22, 2F
文章代碼(AID): #1JiNBwUf (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1JiNBwUf (Perl)