Comment prendre une chaîne et la convertir en minuscule ou en majuscule dans Ruby?
Comment prendre une chaîne et la convertir en minuscule ou en majuscule dans Ruby?
Réponses:
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 upcase
majuscule chaque lettre et met en capitalize
majuscule 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.
nil
; vous devez les utiliser si vous souhaitez modifier un objet sur place, pas si vous souhaitez stocker la valeur dans une autre variable.
.titleize
est issu de Rails. Impossible de le trouver dans la String
documentation de ruby
titleize
doit être supprimé de cette réponse ou au moins indiquer qu'il s'agit d'une méthode Rails.
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.
String.public_instance_methods(false)
pour rechercher toutes les méthodes d'instance publique spécifiquement définies par String
.
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.
La downcase
mé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
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 ÁÂÃÀÇÉÊÍÓÔÕÚ"
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
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
'Testing'.swapcase #=> tESTING
Depuis Ruby 2.4, il existe un mappage de cas Unicode complet . Source: https://stackoverflow.com/a/38016153/888294 . Voir la documentation de Ruby 2.4.0 pour plus de détails: https://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
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.