webentwicklung-frage-antwort-db.com.de

Ruby macht jeden ersten Buchstaben des Wortes groß

Ich muss aus jedem Word das erste Zeichen in Großbuchstaben und den Rest in Kleinbuchstaben machen ...

manufacturer.MFA_BRAND.first.upcase

setzt nur den ersten Buchstaben in Großbuchstaben, aber ich brauche folgendes:

ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
149
byCoder

versuche dies:

puts 'one TWO three foUR'.split.map(&:capitalize).join(' ')

#=> One Two Three Four

oder

puts 'one TWO three foUR'.split.map(&:capitalize)*' '
201
user904990

In Rails:

"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'

ohne Schienen:

"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ")

#OBJECT IT OUT
def titleize(str)
  str.split(/ |\_/).map(&:capitalize).join(" ")
end

ohne Rails (laden Sie ActiveSupport von Rails, um die Methode #titleize auf String zu patchen)

require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"

(einige) String-Anwendungsfälle, die von #titleize behandelt werden

  • "Kirk Douglas"
  • "kirk_douglas"
  • "Kirk-Douglas"
  • "kirkDouglas"
  • "KirkDouglas"

#titleize gotchas

Die #Titleize-Methode ist etwas komplexer, als man zunächst erwarten könnte, und kann zu unerwarteten Ergebnissen führen, insbesondere in Fällen, in denen die Groß- und Kleinschreibung beachtet wird, wie von @JamesMcMahon aufgezeigt:

"hEy lOok".titleize #=> "H Ey Lo Ok"

weil es dazu gedacht ist, mit Code in Kamelhülle zu arbeiten:

"kirkDouglas".titleize #=> "Kirk Douglas"

Um mit diesem Edge-Fall fertig zu werden, können Sie Ihren String zuerst mit #downcase bereinigen, bevor Sie #titleize ausführen. Wenn Sie dies tun, werden Sie alle Trennungen von camelCased Word natürlich löschen:

"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
250
boulder_ruby

"hello world".titleize der "Hello World" ausgeben soll.

36

Eine weitere Option ist die Verwendung eines Regex und eines Gsub, der einen Block belegt:

'one TWO three foUR'.gsub(/\w+/, &:capitalize)
18
Bob Nadler
4
"hello world".split.each{|i| i.capitalize!}.join(' ')
3
Muhamamd Awais

Wenn Sie versuchen, den ersten Buchstaben jedes Wortes in einem Array groß zu schreiben, können Sie einfach Folgendes eingeben: 

array_name.map (&: capitalize)

0
astee