2011年2月25日星期五

Re: [PerlChina] Perl 能否像emacs那样进行更智能一些的文本替换?

呵呵,上面这个是错的,一时没考虑清楚,手快给发了。我再想想。

在 2011年2月25日 下午6:10,Achilles Xu <formalin14@gmail.com>写道:
tr/loveLOVE/testTEST/;

在 2011年2月25日 下午3:22,Kermit <kermit.mei@gmail.com>写道:

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 <kermit.mei@gmail.com>写道:
>         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
>         讨论组”论坛。
>         要向此网上论坛发帖,请发送电子邮件至
>         perlchina@googlegroups.com
>         要取消订阅此网上论坛,请发送电子邮件至 perlchina
>         +unsubscribe@googlegroups.com
>         若有更多问题,请通过
>         http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论
>         坛。
>
>
>
>
> --
> ---------------------------
> Achilles Xu
>
>
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论
> 组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina
> +unsubscribe@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN
> 访问此网上论坛。


--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。




--
---------------------------
Achilles Xu




--
---------------------------
Achilles Xu

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: