Comment convertir une chaîne en minuscules ou en majuscules en Ruby


Réponses:


1590

Ruby a quelques méthodes pour changer la casse des chaînes. Pour convertir en minuscules, utilisez downcase:

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

De même, met en upcasemajuscule chaque lettre et met en capitalizemajuscule la première lettre de la chaîne, mais en minuscule le reste:

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

Si vous souhaitez modifier une chaîne sur place, vous pouvez ajouter un point d'exclamation à l'une de ces méthodes:

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

Reportez-vous à la documentation de String pour plus d'informations.


2
Je n'y ai pensé qu'après y avoir répondu, mais je vous donnerai tout de même le mérite d'avoir pris le temps d'y répondre. Merci!
Heat Miser

3
Fais attention! me semble comme utiliser le bang "!" retournera zéro s'il n'y a pas de majuscule. alors str = "this" .downcase! renvoie str = nil
Phil_Ken_Sebben

12
Souvent, les «méthodes de coup» reviennent nil; vous devez les utiliser si vous souhaitez modifier un objet sur place, pas si vous souhaitez stocker la valeur dans une autre variable.
Sophie Alpert

6
.titleizeest issu de Rails. Impossible de le trouver dans la Stringdocumentation de ruby
ronald8192

3
titleizedoit être supprimé de cette réponse ou au moins indiquer qu'il s'agit d'une méthode Rails.
Sagar Pandya

122

Vous pouvez découvrir toutes les méthodes disponibles sur une chaîne en ouvrant irb et en exécutant:

"MyString".methods.sort

Et pour une liste des méthodes disponibles pour les chaînes en particulier:

"MyString".own_methods.sort

Je l'utilise pour découvrir des choses nouvelles et intéressantes sur des objets dont je n'aurais peut-être pas su qu'ils existaient autrement.


12
Le seul problème avec cette réponse est que #own_methods ne semble pas exister. Est-ce d'une extension Irb?
Mark Wilden

12
Salut - Je pensais alors apprendre quelque chose de nouveau avec les #own_methods, mais cela n'existe pas non plus pour moi. Cependant, je vais habituellement: ("MyString" .methods - Object.merhods) .sort
océanicien

2
Très similaire au patch @fakeleft référencé, et je l'ai dans mon fichier .irbrc. J'ai monkey patch Object et crée #own_methds avec ceci: (obj.methods - obj.class.superclass.instance_methods) .sort
mlambie

1
@Laser Les méthodes de String en particulier sont celles définies dans la classe String elle-même. Les méthodes disponibles sur une chaîne incluent celles définies dans sa ou ses superclasses.
Fund Monica's Lawsuit

1
Utilisez String.public_instance_methods(false)pour rechercher toutes les méthodes d'instance publique spécifiquement définies par String.
3limin4t0r

39

Comme @endeR l'a mentionné, si l'internationalisation est un problème, le joyau unicode_utils est plus que suffisant.

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

Les manipulations de chaînes dans Ruby 2.4 sont désormais sensibles à l'unicode.


18

La downcaseméthode ruby renvoie une chaîne avec ses lettres majuscules remplacées par des lettres minuscules.

"string".downcase

https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase



2
Bien que cela aide techniquement à répondre à la question, cela devrait vraiment être plus éclairant. Peut-être montrer le résultat? Peut-être un lien vers la documentation?
le Tin Man

12

... et la majuscule est:

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

12

Les rails petit bijou de soutien actif fournit upcase, downcase, swapcase, capitalize, etc. méthodes avec le soutien de l' internationalisation:

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

1

Vous pouvez trouver la méthode des chaînes comme "strings".methods vous pouvez définir comme chaîne upcase, downcase, titleize. Par exemple,

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

1

La méthode .swapcase transforme les derniers majuscules d'une chaîne en minuscules et les lettres minuscules en majuscules.

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

1
Merci! Ceci est exactement ce que je cherchais. Une chaîne de casse mixte pourrait rendre plus évidente exactement ce que fait cette méthode ...'Testing'.swapcase #=> tESTING
Matthew


0

Ne fonctionnera pas pour tout le monde, mais cela m'a juste fait gagner beaucoup de temps. J'ai juste eu le problème avec un CSV renvoyant "TRUE ou" FALSE "donc j'ai juste ajouté VALUE.to_s.downcase ==" true "qui retournera le booléen true si la valeur est" TRUE "et false si la valeur est" FALSE ", mais fonctionnera toujours pour le booléen vrai et faux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.