web-dev-qa-db-fra.com

Comment mettre en majuscule la première lettre de chaque mot de la chaîne

Comment capitaliser la première lettre de chaque monde de la chaîne dans Ruby on Rails:

"goyette-xyz-is wide road".titleize returns "Goyette Xyz Is Wide Road".

Je veux la sortie comme:

"goyette-xyz is wide road".SOME-FUNCTION should return "Goyette-xyz-is Wide Road".

titleize supprime le trait de soulignement et les traits d'union, mais je veux le conserver dans la chaîne.

13
kashif

vous pouvez simplement utiliser le .titleize comme ceci "i want to make the first letter of each work into a cap".titleize

vous pouvez en apprendre plus sur titleize d'apidocks

titleize (Word) public

Met en majuscule tous les mots et remplace certains caractères de la chaîne pour créer un titre plus joli. titleize est conçu pour créer de jolis résultats. Il n'est pas utilisé dans les composants internes de Rails.

titleize est également aliasé comme titlecase.

Exemples:

"man from the boondocks".titleize   # => "Man From The Boondocks"
"x-men: the last stand".titleize    # => "X Men: The Last Stand"
"TheManWithoutAPast".titleize       # => "The Man Without A Past"
"raiders_of_the_lost_ark".titleize  # => "Raiders Of The Lost Ark"

comment cette actualité fonctionne 

# File activesupport/lib/active_support/inflector/methods.rb, line 115
def titleize(Word)
  humanize(underscore(Word)).gsub(/\b('?[a-z])/) { $1.capitalize }
end

Pour conserver réellement "-" dans les travaux, nous pouvons ajouter une nouvelle méthode à la classe string comme ceci.

# ./lib/core_ext/string.rb
class String
  #"goyette-xyz-is wide road".titleize_with_dashes#=> "Goyette-xyz-is Wide Road"
  def titleize_with_dashes
    humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
  end
end
41
MZaragoza

Vous pouvez mettre en œuvre la méthode appropriée par vous-même:

class String
  def my_titleize
    split.map(&:capitalize).join(' ')
  end
end

"goyette-xyz-is wide road".my_titleize
#=> "Goyette-xyz-is Wide Road"
6
Marek Lipka

Et si, comme pour moi maintenant, vous devez mettre la première lettre en majuscule, même pour les mots en pointillés, vous pouvez le faire comme ceci:

def titleize_and_keep_dashes(text)
  text.split.map(&:capitalize).join(' ').split('-').map(&:titleize).join('-')
end
titleize_and_keep_dashes("goyette-xyz-is wide road")
# => "Goyette-Xyz Is Wide Road".
2
Jeremy F.

Ajoutez la méthode .capitalize à votre chaîne pour que la première lettre soit automatiquement mise en majuscule.

0
ajknzhol