Re: [問題] 判斷與取代已刪文
提供某一種解法,參考看看...
假設一個雜湊 %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
07/06 10:35, 1F
→
07/06 12:22, , 2F
07/06 12:22, 2F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章