Respuestas:
Usted está buscando casecmp
. Regresa 0
si dos cadenas son iguales, sin distinción entre mayúsculas y minúsculas.
str1.casecmp(str2) == 0
"Apple".casecmp("APPLE") == 0
#=> true
Alternativamente, puede convertir ambas cadenas a minúsculas ( str.downcase
) y comparar para igualdad.
casecmp
: ¿un nombre tonto para un método de comparación caso- en- sensible?
== 0
conzero?
"Apple".casecmp("APPLE").zero?
Pero personalmente me gusta que Andrés responda a continuación, que usa.casecmp?
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
casecmp
basura.
"aBcDeF".downcase == "abcdef"
en su lugar. Mucho más legible y las ganancias de rendimiento del uso casecmp
se eliminan en Ruby 2.4+.
false
y nil
para una API como esta ...
En caso de que tenga 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 una huella de memoria más pequeña, puede elegir 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 se pueden comparar cadenas UTF-8 manualmente sin active_support
gemas:
>> str1.downcase == str2.downcase
=> true
casecmp y cero? son métodos incorporados de rubí. casecmp devuelve 0 si dos cadenas son iguales, sin distinción entre mayúsculas y minúsculas? comprueba el valor cero (== 0)
str1.casecmp(str2).zero?
0
, especialmente cuando está anidado con una condición más complicada.
¿Para ruby 2.4 funciona bien casecmp? para cadenas utf-8 (no se necesitan mb_chars):
2.4.1 :062 > 'строка1'.casecmp?('СтроКа1')
=> true
pero casecmp no funciona para utf-8:
2.4.1 :062 > 'строка1'.casecmp('СтроКА1')
=> 1
2.4.1 :063 > 'string1'.casecmp('StrInG1')
=> 0