2010-08-03 5 views

Respuesta

16

sí - utilizar uc() (función en mayúsculas y ver 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";' 

$ 

Puede utilizar obviamente lc() también.

Si desea que el operador real "eq" no distinga entre mayúsculas y minúsculas, podría ser posible utilizar sobrecargas, pero no creo que eso sea lo que está pidiendo, aclare su pregunta si ese es el caso. Tampoco es una gran idea si lo desea, en mi humilde opinión, demasiado frágil y conduce a posibles fallas difíciles de rastrear y encontrar posibles errores.

Además, es una exageración en su caso específico en el que sólo desea la igualdad, pero Perl expresiones regulares también tienen dependiente de las mayúsculas modifyer "i"

+0

Esto funciona muy bien – shinjuo

9

Un par de maneras de hacer esto:

  • Utilice el operador lc o uc, que convierte las dos cadenas para bajar o mayúsculas respectivamente:

    lc "steve" eq lc "STevE";

una expresión regular sencilla hará igual de bien:

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

Estos gran trabajo – shinjuo

+0

Vuelva a leer los documentos de SmartMatch; ese último está cayendo en el caso Any ~~ Regex, lo que significa que el sitio izquierdo está codificado y emparejado usando el derecho. En 5.10.1, parece estar haciendo '" (? I-xsm: steve) "= ~/STevE/i' cuando esperaba' ($ _ = ~/steve/i) = ~/STevE/i ', pero ninguno es apropiado aquí. – ysth

+0

N.B. smartmatch en 5.10.0 tiene fallas de diseño (que fueron arregladas en 5.10.1) y no debe ser usado. – ysth

1

Según perldoc (http://perldoc.perl.org/functions/fc.html), es mejor utilizar

fc("steve") eq fc("STevE") 

No se olvide de añadir esta línea antes del primer uso de fc:

use feature 'fc'; 
+0

Buen punto. Básicamente 'fc' es similar a' uc'/'lc', pero es capaz de manejar caracteres que no sean ASCII. – PerlDuck

+0

'uc' y' lc' también funcionan bien con caracteres Unicode. –

Cuestiones relacionadas