On Mon, 2011-02-28 at 09:14 +0800, zwg.zero wrote:
> 我的思路是: 第一步把匹配“LOVE”(全大写的)替换为“TEST”;
>                           第二步把匹配“L"ove (首字符l大写,后面字符不
> 管大小写)替换为“Test”;
>                          第三步把匹配    "love"(不管大小写)都替换
> 为“test”。


我也是这个思路,就是不知到怎么用最Perl的方式写出来。我那个写法太罗嗦了。
最好能有一句实现的那种。


> On 02/25/2011 10:23 PM, zesheng wang wrote: 
> > $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]。
> >                                 要取消订阅此网上论坛,请发送电子邮件
> >                                 至 perlchina
> >                                 [email protected]。
> >                                 若有更多问题,请通过
> >                                 
> > http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
> >                                 
> >                                 
> >                         
> >                         
> >                         
> >                         -- 
> >                         ---------------------------
> >                         Achilles Xu
> >                         
> >                 
> >                 
> >                 
> >                 -- 
> >                 ---------------------------
> >                 Achilles Xu
> >                 
> >         
> >         
> >         
> >         -- 
> >         ---------------------------
> >         Achilles Xu
> >         
> >         -- 
> >         您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina
> >         Mongers 讨论组”论坛。
> >         要向此网上论坛发帖,请发送电子邮件至
> >         [email protected]。
> >         要取消订阅此网上论坛,请发送电子邮件至 perlchina
> >         [email protected]。
> >         若有更多问题,请通过
> >         http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上
> >         论坛。
> >         
> > 
> > -- 
> > 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论
> > 组”论坛。
> > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。
> > 要取消订阅此网上论坛,请发送电子邮件至 perlchina
> > [email protected]。
> > 若有更多问题,请通过
> > http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
> 
> 
> 
> -- 
> 您收到此邮件是因为您订阅了 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 访问此网上论坛。

回复