1221 votes

Comment convertir une chaîne de caractères en minuscules ou en majuscules en Ruby ?

Comment prendre une chaîne de caractères et la convertir en minuscules ou en majuscules en Ruby ?

1768voto

Ben Alpert Points 30381

Ruby dispose de quelques méthodes pour changer la casse des chaînes de caractères. Pour convertir en minuscules, utilisez downcase :

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

De même, upcase met une majuscule à chaque lettre et capitalize met la première lettre de la chaîne en majuscule mais met le reste en minuscule :

"hello James!".upcase      #=> "HELLO JAMES!"
"hello James!".capitalize  #=> "Hello james!"
"hello James!".titleize    #=> "Hello James!" (Rails/ActiveSupport only)

Si vous souhaitez modifier une chaîne de caractères 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 pour String pour plus d'informations.

2 votes

Je n'y ai pensé qu'après avoir répondu à la question, mais je vous félicite d'avoir pris le temps d'y répondre quand même. Merci.

4 votes

Attention ! il me semble que l'utilisation du bang " !" retournera nil s'il n'y a pas de majuscule. donc str = "this".downcase ! returns str = nil

16 votes

Souvent, les "méthodes bang" reviennent nil ; vous devez les utiliser si vous voulez modifier un objet sur place, et non si vous voulez stocker la valeur dans une autre variable.

128voto

mlambie Points 4101

Vous pouvez découvrir toutes les méthodes disponibles sur un String en ouvrant irb et en exécutant :

"MyString".methods.sort

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

"MyString".own_methods.sort

Je m'en sers pour découvrir des choses nouvelles et intéressantes sur des objets dont je n'aurais peut-être pas soupçonné l'existence autrement.

12 votes

Le seul problème avec cette réponse est que #own_methods ne semble pas exister. Cela vient-il d'une extension de l'Irb ?

12 votes

Salut - Je pensais apprendre quelque chose de nouveau avec le #own_methods alors, mais il n'existe pas pour moi non plus. Par contre, je fais habituellement : ("MyString".methods - Object.merhods).sort

0 votes

Idem. @mlambie pourrait avoir quelque chose comme ce patch de singe installé quelque part.

41voto

nurettin Points 4083

Comme @endeR l'a mentionné, si l'internationalisation est une préoccupation, la gemme unicode_utils est plus qu'adéquate.

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

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

33voto

http://www.ruby-doc.org/core/classes/String.html

Je n'essaie pas d'être sarcastique, je ne fais que transmettre un outil très utile.

En général, je tape simplement "Ruby, Class, Datatype" dans Google et la rubydoc appropriée apparaît.

très pratique

24voto

Heat Miser Points 6305

Le rubis downcase renvoie une chaîne de caractères dont les lettres majuscules ont été remplacées par des lettres minuscules.

"string".downcase

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X