Je dois mettre le premier caractère de chaque mot en majuscule et le reste en minuscule ...
manufacturer.MFA_BRAND.first.upcase
met uniquement la première lettre en majuscule, mais j’ai besoin de ceci:
ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
essaye ça:
puts 'one TWO three foUR'.split.map(&:capitalize).join(' ')
#=> One Two Three Four
ou
puts 'one TWO three foUR'.split.map(&:capitalize)*' '
Dans les rails:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
sans rails:
"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ")
#OBJECT IT OUT
def titleize(str)
str.split(/ |\_/).map(&:capitalize).join(" ")
end
sans Rails (chargez ActiveSupport de Rails dans le correctif pour la méthode #titleize à String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
La méthode #titleize est un peu plus complexe que prévu et peut produire des résultats inattendus, en particulier dans des situations sensibles à la casse, comme l'a souligné @JamesMcMahon:
"hEy lOok".titleize #=> "H Ey Lo Ok"
car il est destiné à gérer le code camel casé comme:
"kirkDouglas".titleize #=> "Kirk Douglas"
Pour traiter ce cas Edge, vous pouvez nettoyer votre chaîne avec #downcase
avant d'exécuter #titleize. Bien sûr, si vous faites cela, vous éliminerez toutes les séparations de mots camelCased:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
"hello world".titleize
qui devrait générer "Hello World".
Une autre option consiste à utiliser un regex et un gsub, qui prend un bloc:
'one TWO three foUR'.gsub(/\w+/, &:capitalize)
Regardez dans la méthode String # capitalize.
http://www.Ruby-doc.org/core-1.9.3/String.html#method-i-capitalize
"hello world".split.each{|i| i.capitalize!}.join(' ')
Si vous essayez de mettre en majuscule la première lettre de chaque mot d'un tableau, vous pouvez simplement dire ceci:
array_name.map (&: capitalize)