upcase for ruby string compare capitalization

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

Aquí tienes más información

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?