J'ai besoin de mettre le premier caractère de chaque mot en majuscule et de mettre 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
split
sera divisé sur l'espace par défaut, vous pouvez donc le rendre encore plus court:'one TWO three foUR'.split.map(&:capitalize).join(' ')
.map(&:capitalize)
ou au moins indiquer où dans le document vous l'avez trouvé? Je ne trouve aucune référence à cela. De plus, quel est le problème avec*' '
la fin du deuxième extrait de code?&:method
syntaxe demap
est une manière concise d'appeler une méthode sur chaque élément du tableau . Vous pouvez ensuite appelerjoin
pour transformer ce tableau en une chaîne. Le* ' '
est une autre manière d'appeler join . Vous pouvez considérer cela comme une multiplication des éléments du tableau pour créer une chaîne.Dans les rails:
sans Rails:
sans Rails (ActiveSupport des rails de chargement pour patcher la méthode #titleize sur
String
)(certains) cas d'utilisation de chaînes gérés par #titleize
#titleize gotchas
Les rails
titleize
convertissent des éléments tels que les tirets et les traits de soulignement en espaces et peuvent produire d'autres résultats inattendus, en particulier avec des situations sensibles à la casse, comme le souligne @JamesMcMahon:car il est destiné à gérer du code à boîtier camel comme:
Pour gérer ce cas particulier, vous pouvez d'abord nettoyer votre chaîne
#downcase
avant d'exécuter #titleize. Bien sûr, si vous faites cela, vous effacerez toutes les séparations de mots en camelCased:la source
"hello world".titleize
qui devrait afficher "Hello World".la source
"One Two Three Fo Ur"
est différente de la sortie souhaitée dans ce cas, mais peut être souhaitée dans d'autres.Une autre option consiste à utiliser un regex et un gsub, qui prend un bloc:
la source
.gsub(/\b\w/, &:capitalize)
préserve la capitalisation voulue dans les mots, par exemple "Jane mcCollins"Examinez la méthode String # capitalize.
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize
la source
la source
each
bloc est supprimée. Le!
modifie les chaînes produites parsplit
in-place. Sans le!
,capitalize
créerait une nouvelle chaîne en majuscules par itération, puis la supprimerait immédiatement. Le résultat final serait"hello world"
, exactement le même que la chaîne d'origine. Avec le!
, chaque chaîne dusplit
tableau 'd est modifiée et le résultat deeach
est donc un tableau de chaînes en majuscules.map
. Hack intéressant cependant. PointsSi vous essayez de mettre en majuscule la première lettre de chaque mot dans un tableau, vous pouvez simplement mettre ceci:
array_name.map (&: capitalize)
la source
J'ai utilisé ceci pour un problème similaire:
Cela gère les cas étranges suivants que j'ai vus en essayant les réponses précédentes:
la source