$loveStr =~ s/(l)ove/@{[$1 eq 'L'?'T':'t']}est/gi;
不知道你是不是要这个效果?在 2011年2月25日 下午6:17,Achilles Xu <[email protected]>写道: > 上面的方法也不是一无是处,可以先把foreach里的代码简化了。至于怎么一句实现,我再想想。 > > > $loveStr = q/love LOVE Love lOVe LOve loVE/; > print $loveStr."\n"; > foreach my $en ($loveStr =~ m/love/ig) { > $en2 = $en; > $en2 =~ tr/loveLOVE/testTEST/; > $loveStr =~ s/$en/$en2/g; > } > print $loveStr."\n"; > > 在 2011年2月25日 下午6:11,Achilles Xu <[email protected]>写道: > > 呵呵,上面这个是错的,一时没考虑清楚,手快给发了。我再想想。 >> >> 在 2011年2月25日 下午6:10,Achilles Xu <[email protected]>写道: >> >> tr/loveLOVE/testTEST/; >>> >>> 在 2011年2月25日 下午3:22,Kermit <[email protected]>写道: >>> >>> On Fri, 2011-02-25 at 15:11 +0800, Achilles Xu wrote: >>>> > s/love/test/i; >>>> > >>>> > 最后的i表示不区分大小写 >>>> >>>> 那样会把所有的大小写无关的love都换成小写的test, 我其实想要的是这样的效 >>>> 果: >>>> >>>> $loveStr = q/love LOVE Love lOVe LOve loVE/; >>>> print $loveStr."\n"; >>>> foreach my $en ($loveStr =~ m/love/ig) { >>>> if($en eq uc($en)) { >>>> $loveStr =~ s/$en/TEST/g; >>>> }elsif(substr($en,0,1) eq uc(substr($en,0,1))) { >>>> $loveStr =~ s/$en/Test/g; >>>> }else { >>>> $loveStr =~ s/$en/test/g; >>>> } >>>> } >>>> print $loveStr."\n"; >>>> >>>> 运行输出: >>>> love LOVE Love lOVe LOve loVE >>>> test TEST Test test Test test >>>> >>>> 只不过上面写法太罗嗦,不知有没有更优雅,更Perl的写法? >>>> >>>> Thanks >>>> B.R >>>> Kermit >>>> >>>> > >>>> > 在 2011年2月25日 下午2:17,Kermit <[email protected]>写道: >>>> > Dear all, >>>> > >>>> > $loveStr = q/love Love LOVE lOVe LOVe/; >>>> > >>>> > 如果在emacs中编辑C/C++代码时,用"M-x replace-string love >>>> > test", >>>> > 就会从 >>>> > q/love Love LOVE lOVe LOVe/; >>>> > 变为: >>>> > q/test Test TEST test Test/; >>>> > >>>> > 就是说能够识别开头的大写和全大写。这在Perl中有没有什么方式快捷 >>>> > 实现? >>>> > >>>> > Thanks >>>> > B.R >>>> > Kermit >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > -- >>>> > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers >>>> > 讨论组”论坛。 >>>> > 要向此网上论坛发帖,请发送电子邮件至 >>>> > [email protected]。 >>>> > 要取消订阅此网上论坛,请发送电子邮件至 perlchina >>>> > [email protected]。 >>>> > 若有更多问题,请通过 >>>> > http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论 >>>> > 坛。 >>>> > >>>> > >>>> > >>>> > >>>> > -- >>>> > --------------------------- >>>> > Achilles Xu >>>> > >>>> > >>>> > >>>> > -- >>>> > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论 >>>> > 组”论坛。 >>>> > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >>>> > 要取消订阅此网上论坛,请发送电子邮件至 perlchina >>>> > [email protected]。 >>>> > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN >>>> > 访问此网上论坛。 >>>> >>>> >>>> -- >>>> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 >>>> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 >>>> 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 >>>> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 >>>> >>>> >>> >>> >>> -- >>> --------------------------- >>> Achilles Xu >>> >>> >> >> >> -- >> --------------------------- >> Achilles Xu >> >> > > > -- > --------------------------- > Achilles Xu > > -- > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
