Eu quero apple
e Apple
comparação para ser true
. Atualmente
"Apple" == "Apple" # returns TRUE
"Apple" == "APPLE" # returns FALSE
ruby
string
string-comparison
Steven
fonte
fonte
casecmp
: Um nome tolo para um caso- no método de comparar sensíveis ao ?!== 0
por #zero?
"Apple".casecmp("APPLE").zero?
Mas eu, pessoalmente, como Andres resposta abaixo, que usa.casecmp?
No Ruby 2.4.0, você tem:
casecmp?(other_str) → true, false, or nil
Aqui você tem mais informações
fonte
casecmp
lixo."aBcDeF".downcase == "abcdef"
. Muito mais legível e os ganhos de desempenho do usocasecmp
são eliminados no Ruby 2.4+.false
enil
para uma API assim ...Caso você precise comparar as seqüências de caracteres UTF-8 que ignoram:
Funciona assim no Ruby 2.3.1 e versões anteriores.
Para uma menor pegada de memória, você pode escolher
string/multibyte
:Edite , Ruby 2.4.0:
Portanto
casecmp
, não funciona na 2.4.0; No entanto, na 2.4.0, pode-se comparar manualmente as strings UTF-8 semactive_support
gem:fonte
casecmp e zero? são métodos embutidos em rubi. casecmp retorna 0 se duas cadeias são iguais, sem distinção entre maiúsculas e minúsculas e zero? verifica o valor zero (== 0)
fonte
0
, especialmente quando aninhado com uma condição mais envolvida.Para ruby 2.4 funcionando bem casecmp? para strings utf-8 (mb_chars não é necessário):
mas o casecmp não está funcionando para o utf-8:
fonte