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

1111

Comment prendre une chaîne et la convertir en minuscule ou en majuscule dans Ruby?

Heat Miser
la source

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.

Sophie Alpert
la source
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.

mlambie
la source
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.

nurettin
la source
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

Heat Miser
la source
conversions de rubis ici: techotopia.com/index.php/Ruby_String_Conversions
TStamper
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"
mlambie
la source
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  ÁÂÃÀÇÉÊÍÓÔÕÚ"
helder.vasc
la source
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
Foram Thakral
la source
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
Rajkumar Ulaganadhan
la source
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.

Mason SB
la source