Cómo convertir una cadena a minúsculas o mayúsculas en Ruby


Respuestas:


1590

Ruby tiene algunos métodos para cambiar el caso de las cadenas. Para convertir a minúsculas, use downcase:

"hello James!".downcase    #=> "hello james!"

Del mismo modo, upcaseescribe en mayúscula cada letra y capitalizeescribe en mayúscula la primera letra de la cadena, pero en minúscula el resto:

"hello James!".upcase      #=> "HELLO JAMES!"
"hello James!".capitalize  #=> "Hello james!"
"hello James!".titleize    #=> "Hello James!"

Si desea modificar una cadena en su lugar, puede agregar un signo de exclamación a cualquiera de esos métodos:

string = "hello James!"
string.downcase!
string   #=> "hello james!"

Consulte la documentación de String para obtener más información.


2
Solo pensé en eso después de haberlo respondido, pero te daré la credibilidad por tomarte el tiempo para responder de todos modos. ¡Gracias!
— Heat Miser

3
¡Cuidado! me parece que usa la explosión "!" devolverá cero si no hay mayúscula. así que str = "this" .downcase! devuelve str = nil
— Phil_Ken_Sebben

12
A menudo, regresan los "métodos de explosión" nil; debe usarlos si desea cambiar un objeto en su lugar, no si desea almacenar el valor en otra variable.
— Sophie Alpert

66
.titleizeEs de Rails. No puedo encontrarlo en la Stringdocumentación de ruby
— ronald8192

3
titleizedebe eliminarse de esta respuesta o al menos indicar que es un método Rails.
— Sagar Pandya

122

Puede encontrar todos los métodos disponibles en una Cadena abriendo irb y ejecutando:

"MyString".methods.sort

Y para obtener una lista de los métodos disponibles para cadenas en particular:

"MyString".own_methods.sort

Utilizo esto para descubrir cosas nuevas e interesantes sobre objetos que de otro modo no habría sabido que existían.


12
El único problema con esta respuesta es que #own_methods no parece existir. ¿Es de una extensión Irb?
— Mark Wilden

12
Hola, pensé que estaba aprendiendo algo nuevo con los #own_methods entonces, pero tampoco existe para mí. Sin embargo, generalmente voy: ("MyString" .methods - Object.merhods) .sort
— oceanician

2
Muy similar al parche @fakeleft al que se hace referencia, y lo tengo en mi archivo .irbrc. Monkey Object y creo #own_methds con esto: (obj.methods - obj.class.superclass.instance_methods) .sort
— mlambie

1
@Laser Los métodos para String en particular son los definidos en la propia clase String. Los métodos disponibles en una cadena incluyen los definidos en su (s) superclase (s).
— Financia la demanda de Mónica

1
Se usa String.public_instance_methods(false)para buscar todos los métodos de instancia pública definidos específicamente por String.
— 3limin4t0r

39

Como mencionó @endeR, si la internacionalización es una preocupación, la gema unicode_utils es más que adecuada.

$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"

Las manipulaciones de cadenas en Ruby 2.4 ahora son unicode-sensibles.



12

... y la mayúscula es:

"Awesome String".upcase
=> "AWESOME STRING"

12

El activo joya carriles de soporte proporciona upcase, downcase, swapcase, capitalize, etc métodos con soporte de internacionalización:

gem install activesupport
irb -ractive_support/core_ext/string
"STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
 => "string  áâãàçéêíóôõú"
"string  áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ"

1

Puede encontrar el método cuerdas como "strings".methods se puede definir cadena como upcase, downcase, titleize. Por ejemplo,

"hii".downcase
"hii".titleize
"hii".upcase

1

El método .swapcase transforma las letras mayúsculas en una cadena en minúsculas y las letras minúsculas en mayúsculas.

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING

1
¡Gracias! Esto es exactamente lo que estaba buscando. Una cadena de mayúsculas y minúsculas podría hacer más obvio exactamente lo que hace este método ...'Testing'.swapcase #=> tESTING
— Mateo


0

No funcionará para todos, pero esto me ahorró mucho tiempo. Acabo de tener el problema con un CSV que devuelve "VERDADERO o" FALSO ", así que simplemente agregué VALOR.to_s.downcase ==" verdadero "que devolverá el valor booleano verdadero si el valor es" VERDADERO "y falso si el valor es" FALSO ", pero seguirá funcionando para el booleano verdadero y falso.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.