Perl 板


LINE

刚刚稍早po的不对 重po一次 %replace_list可以这样生 (我改叫%h 短一点) @h{'a' .. 'z'} = @h{'A' .. 'Z'} = (1 .. 9, map {0} 1 .. 17); 然後replace_abc_123可以这样写 $output = join "", map {exists $h{$_} ? $h{$_} : $_} split //, $string; ※ 引述《Neisseria (Neisseria)》之铭言: : 提供某一种解法,参考看看... : 假设一个杂凑 %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), 来自: 114.43.171.239
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1404223470.A.D55.html
1F:推 CindyLinz:map {0} 1 .. 17 的部分可以写作 (0) x 17 07/02 00:58
2F:→ CindyLinz:exists $h{$_} ? $h{$_} : $_ 刚好可以写作 $h{$_}//$_ 07/02 01:00
3F:→ CindyLinz:因为 %h 里面有放的东西都不是 undef 07/02 01:00
4F:推 CindyLinz:然後 join "" .. split //, $string 可以改作: 07/02 01:02
5F:→ CindyLinz:$output = $string =~ s/[a-zA-Z]/$h{$&}/gr; 07/02 01:02
6F:推 cutekid:想请教: $h{$_}//$_ 是什麽意思呢 :) 07/02 08:23
7F:推 abliou:楼上不介意的话,可以看看小弟的笔记 http://goo.gl/JBkKQW 07/02 14:14
8F:推 CindyLinz:// 是看左边有没有 defined() 有的话用左边, 不然用右边 07/02 17:20
9F:推 cutekid:推 a 大笔记及 C 大 解说。谢谢二位 :) 07/03 08:05
10F:→ AntaresStar:括号0真的很微妙 我早先试是用0 x 17就不行 07/03 16:43
11F:推 CindyLinz:(0) 是 list, 0 是 scalar 呀~ x 配 list 是 repeat 它 07/04 23:40
12F:→ CindyLinz:0 x 17 的话是 scalar, 那是把 0 这个字接 N 次的字串 07/04 23:41







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP