Como converter uma string para letras minúsculas ou maiúsculas em Ruby

1110

Como eu pego uma string e a converto para maiúscula ou minúscula no Ruby?

Aversão ao calor
fonte

Respostas:

1590

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, upcasecoloca em maiúscula todas as letras e em capitalizemaiú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.

Sophie Alpert
fonte
2
Só pensei nisso depois de responder, mas darei a você o crédito por dedicar algum tempo para responder de qualquer maneira. Obrigado!
Heat Miser
3
Cuidado! parece-me como usar o estrondo "!" retornará nulo se não houver letra maiúscula. então str = "this" .downcase! retorna str = nil
Phil_Ken_Sebben
12
Muitas vezes, "métodos estrondosos" retornam nil; você deve usá-los se desejar alterar um objeto no lugar, não se desejar armazenar o valor em outra variável.
Sophie Alpert
6
.titleizeé do Rails. Não pode encontrá-lo em ruby Stringdocumentação
ronald8192
3
titleizeprecisa ser removido desta resposta ou, pelo menos, declarar que é um método Rails.
precisa saber é o seguinte
122

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.

mlambie
fonte
12
O único problema com esta resposta é que #own_methods não parece existir. É de uma extensão Irb?
Mark Wilden
12
Oi - Eu pensei que estava aprendendo algo novo com os #own_methods, mas não existe para mim também. No entanto, eu geralmente vou: ("MyString" .methods - Object.merhods) .sort
oceanician
2
Muito parecido com o patch @fakeleft mencionado, e eu o tenho no meu arquivo .irbrc. Eu penso macaco objecto e criar #own_methds com esta: (obj.methods - obj.class.superclass.instance_methods) .Sort
mlambie
1
@Laser Os métodos para String, em particular, são os definidos na própria classe String. Os métodos disponíveis em uma String incluem os definidos em suas superclasses.
Fund Monica's Lawsuit
1
Use String.public_instance_methods(false)para encontrar todos os métodos de instância pública definidos especificamente por String.
3limin4t0r
39

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.

nurettin
fonte
18

O downcasemé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

Aversão ao calor
fonte
rubi conversões aqui: techotopia.com/index.php/Ruby_String_Conversions
TStamper
2
Embora tecnicamente isso ajude a responder à pergunta, realmente deve ser mais esclarecedor. Mostrar o resultado, talvez? Talvez um link para a documentação?
the Tin Man
12

... e a maiúscula é:

"Awesome String".upcase
=> "AWESOME STRING"
mlambie
fonte
12

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  ÁÂÃÀÇÉÊÍÓÔÕÚ"
helder.vasc
fonte
1

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
Foram Thakral
fonte
1

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
Rajkumar Ulaganadhan
fonte
1
Obrigado! Era exatamente isso que eu estava procurando. Uma seqüência de letras maiúsculas e minúsculas pode torná-lo mais óbvio exatamente o que este método faz ...'Testing'.swapcase #=> tESTING
Matthew
0

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.

Mason SB
fonte