无论perl中的大小写,都要比较两个字符串

时间:2010-08-03 17:40:25

标签: perl compare equals

无论如何要比较两个字符串而不管大小写? 例如

"steve" eq "STevE"   <----- these would match
"SHOE" eq "shoe"

你得到了照片

3 个答案:

答案 0 :(得分:19)

是 - 使用uc()(大写字母功能;请参阅http://perldoc.perl.org/functions/uc.html

$ perl -e 'print uc("steve") eq uc("STevE"); print "\n";'
1
$ perl -e 'print uc("SHOE") eq uc("shoe"); print "\n";'          
1
$ perl5.8 -e 'print uc("SHOE") eq uc("shoe1"); print "\n";'

$

您显然也可以使用lc()

如果您希望实际的“eq”运算符不区分大小写,则可能会使用重载但我不认为这是您所要求的 - 请澄清您的问题,如果是这种情况。如果你真的想要它,那也不是一个好主意,恕我直言 - 太脆弱了,导致很难找到和调试错误。

另外,在你想要相等的特定情况下,这是一种矫枉过正,但Perl正则表达式也有与案例无关的修饰符“i”

答案 1 :(得分:9)

有两种方法可以做到这一点:

  • 使用lcuc运算符,它将两个字符串分别转换为大写或小写:

    lc "steve" eq lc "STevE";

一个简单的正则表达式也可以这样做:

'steve' =~ /^STevE$/i;

答案 2 :(得分:1)

根据perldoc(http://perldoc.perl.org/functions/fc.html),使用

更好
fc("steve") eq fc("STevE")

在第一次使用fc

之前,不要忘记添加此行
use feature 'fc';