Como eu pego uma string e a converto para maiúscula ou minúscula no Ruby?
Como eu pego uma string e a converto para maiúscula ou minúscula no Ruby?
Respostas:
Ruby tem alguns métodos para mudar o caso de strings. Para converter em minúsculas, use downcase
:
"hello James!".downcase #=> "hello james!"
Da mesma forma, upcase
coloca em maiúscula todas as letras e em capitalize
maiúscula a primeira letra da string, mas em minúsculas o restante:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!"
Se você deseja modificar uma sequência no lugar, você pode adicionar um ponto de exclamação a qualquer um desses métodos:
string = "hello James!"
string.downcase!
string #=> "hello james!"
Consulte a documentação para String para obter mais informações.
nil
; você deve usá-los se desejar alterar um objeto no lugar, não se desejar armazenar o valor em outra variável.
.titleize
é do Rails. Não pode encontrá-lo em ruby String
documentação
titleize
precisa ser removido desta resposta ou, pelo menos, declarar que é um método Rails.
Você pode descobrir todos os métodos disponíveis em uma String abrindo irb e executando:
"MyString".methods.sort
E para uma lista dos métodos disponíveis para seqüências de caracteres em particular:
"MyString".own_methods.sort
Eu uso isso para descobrir coisas novas e interessantes sobre objetos que, de outra forma, eu nem sabia que existiam.
String.public_instance_methods(false)
para encontrar todos os métodos de instância pública definidos especificamente por String
.
Como o @endeR mencionado, se a internacionalização for uma preocupação, a gema unicode_utils é mais do que adequada.
$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"
Manipulações de string no Ruby 2.4 agora são sensíveis a unicode.
O downcase
método ruby retorna uma string com suas letras maiúsculas substituídas por letras minúsculas.
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
O Rails gem Active Support fornece upcase
, downcase
, swapcase
, capitalize
, etc. métodos com suporte a internacionalização:
gem install activesupport
irb -ractive_support/core_ext/string
"STRING ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
=> "string áâãàçéêíóôõú"
"string áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING ÁÂÃÀÇÉÊÍÓÔÕÚ"
Você pode encontrar método de cordas como "strings".methods
você pode definir string como upcase
, downcase
, titleize
. Por exemplo,
"hii".downcase
"hii".titleize
"hii".upcase
O método .swapcase transforma as letras maiúsculas em uma seqüência de caracteres em minúsculas e as letras minúsculas em maiúsculas.
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
'Testing'.swapcase #=> tESTING
Desde o Ruby 2.4, existe um mapeamento completo de casos Unicode . Fonte: https://stackoverflow.com/a/38016153/888294 . Consulte a documentação do Ruby 2.4.0 para obter detalhes: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
Não vai funcionar para todos, mas isso me salvou um monte de tempo. Eu apenas tive o problema com um CSV retornando "TRUE ou" FALSE ", então acabei de adicionar VALUE.to_s.downcase ==" true ", que retornará o boolean true se o valor for" TRUE "e false se o valor for" FALSE ", mas ainda funcionará para o booleano true e false.