无论如何要比较两个字符串而不管大小写? 例如
"steve" eq "STevE" <----- these would match
"SHOE" eq "shoe"
你得到了照片
答案 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)
有两种方法可以做到这一点:
使用lc
或uc
运算符,它将两个字符串分别转换为大写或小写:
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';