如何判断字符串的最后一个字符是"\"?如果是的话就去掉

如何判断字符串的最后一个字符是"\"?如果是的话就去掉

小弟是新手,清哪位大侠帮忙解决一下,谢谢啦!
{local $/='\\';chomp $str;}
$str=~s/(.*?)\\$/$1/;
谢谢楼上二位!


QUOTE:
原帖由 kairi 于 2007-9-10 17:13 发表
$str=~s/(.*?)\\$/$1/;

不解,为何要加个 ?
而且,我觉得相对$str=~s/(.*?)\\$/$1/; $str=~s/\\$//;可能更好吧
貌似flw老大的方法最快。。试试看


QUOTE:
原帖由 perljoker 于 2007-9-10 17:28 发表

不解,为何要加个 ?
而且,我觉得相对$str=~s/(.*?)\\$/$1/; $str=~s/\\$//;可能更好吧
貌似flw老大的方法最快。。试试看

测试执行1000000次后,好像  $str =~ s/\\$//; 更快些


QUOTE:
原帖由 shappen 于 2007-9-10 18:07 发表


测试执行1000000次后,好像  $str =~ s/\\$//; 更快些

你说的是相对于flw的{local $/='\\';chomp $str;}
还是$str=~s/(.*?)\\$/$1/;肯定比这个快啊


QUOTE:
原帖由 perljoker 于 2007-9-11 09:12 发表

你说的是相对于flw的{local $/='\\';chomp $str;}
还是$str=~s/(.*?)\\$/$1/;肯定比这个快啊

相信 Perl 的正则表达式,它在很多时候,比你我想象的要快很多。


QUOTE:
原帖由 perljoker 于 2007-9-10 17:28 发表

不解,为何要加个 ?
而且,我觉得相对$str=~s/(.*?)\\$/$1/; $str=~s/\\$//;可能更好吧
貌似flw老大的方法最快。。试试看

2种不同的思路.

=~ s/(.*?)\\$/$1/;    ### 将整体替换为部分. 若此行有1000字符(不算换行), 则要替换前999个.

=~ s/\\$//;               ###  仅替换一个字符


结果是一样的, 速度一目了然.


QUOTE:
原帖由 perljoker 于 2007-9-10 17:28 发表

不解,为何要加个 ?
而且,我觉得相对$str=~s/(.*?)\\$/$1/; $str=~s/\\$//;可能更好吧
貌似flw老大的方法最快。。试试看

对于前者, 符号?, 此处是多余的.

后者更直观, 速度更快, 见上贴我的分析.