2010-05-16 26 views

Respuesta

223

Está buscando casecmp. Devuelve 0 si dos cadenas son iguales, sin distinción de mayúsculas y minúsculas.

str1.casecmp(str2) == 0 

"Apple".casecmp("APPLE") == 0 
#=> true 

Alternativamente, usted puede convertir cadenas a minúsculas (str.downcase) y compara la igualdad.

+0

Esto funcionó fantásticamente: D muchas gracias – Steven

+18

De mis puntos de referencia casecmp es al menos dos veces más rápido que el método downcase – Jacob

+67

'casecmp': un nombre tonto para un caso - * en * - método de comparación sensible ?! – Zabba

5

En caso de tener que comparar cadenas UTF-8 ignorando mayúsculas y minúsculas:

>> str1 = "Мария" 
=> "Мария" 
>> str2 = "мария" 
=> "мария" 
>> str1.casecmp(str2) == 0 
=> false 
>> require 'active_support/all' 
=> true 
>> str1.mb_chars.downcase.to_s.casecmp(str2.mb_chars.downcase.to_s) == 0 
=> true 

funciona de esta manera en Ruby 2.3.1 y versiones anteriores.

Para más pequeña huella de memoria que puede recoger la cereza string/multibyte:

require 'active_support' 
require 'active_support/core_ext/string/multibyte' 

Editar, Ruby 2.4.0:

>> str1.casecmp(str2) == 0 
=> false 

Así casecmp no funciona en 2.4.0; Sin embargo, en 2.4.0 se puede comparar cadenas UTF-8 de forma manual sin active_support joya:

>> str1.downcase == str2.downcase 
=> true 
13

En de Ruby 2.4.0 tiene: casecmp?(other_str) → true, false, or nil

"abcdef".casecmp?("abcde")  #=> false 
"aBcDeF".casecmp?("abcdef") #=> true 
"abcdef".casecmp?("abcdefg") #=> false 
"abcdef".casecmp?("ABCDEF") #=> true 

Here you have more info

0

casecmp y cero ? son métodos incorporados ruby. casecmp devuelve 0 si dos cadenas son iguales, insensible a mayúsculas y cero? comprueba el valor cero (== 0)

str1.casecmp(str2).zero? 
Cuestiones relacionadas