上面的方法也不是一无是处,可以先把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 访问此网上论坛。