ruby - for - Comparación de cuerdas de rubí independientemente de la caja de cuerdas
string ruby (4)
En Ruby 2.4.0 tienes: casecmp?(other_str) → true, false, or nil
"abcdef".casecmp?("abcde") #=> false
"aBcDeF".casecmp?("abcdef") #=> true
"abcdef".casecmp?("abcdefg") #=> false
"abcdef".casecmp?("ABCDEF") #=> true
Necesito verificar
"Apple" == "Apple" # returns TRUE
"Apple" == "APPLE" # returns TRUE
"Apple" == "Apple1" # returns FALSE
en Ruby.
Necesito una comparación de cadenas, pero para que el cheque no distinga entre mayúsculas y minúsculas.
En caso de que tenga que comparar cuerdas UTF-8 ignorando el estuche:
>> 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 una huella de memoria más pequeña, puede seleccionar una string/multibyte
:
require ''active_support''
require ''active_support/core_ext/string/multibyte''
Editar , Ruby 2.4.0:
>> str1.casecmp(str2) == 0
=> false
Entonces, casecmp
no funciona en 2.4.0; Sin embargo, en 2.4.0 uno puede comparar cadenas UTF-8 manualmente sin la gema active_support
:
>> str1.downcase == str2.downcase
=> true
Usted 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, puede convertir ambas cadenas en minúsculas ( str.downcase
) y comparar para igualdad.
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?