Ich muss das erste Zeichen jedes Wortes in Großbuchstaben schreiben und den Rest in Kleinbuchstaben schreiben ...
manufacturer.MFA_BRAND.first.upcase
setzt nur den ersten Buchstaben in Großbuchstaben, aber ich brauche dies:
ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
split
wird standardmäßig auf Speicherplatz aufgeteilt, so dass Sie es noch kürzer machen können:'one TWO three foUR'.split.map(&:capitalize).join(' ')
.map(&:capitalize)
oder zumindest darauf hinweisen, wo in dem Dokument Sie es gefunden haben? Ich kann keinen Hinweis darauf finden. Und wie sieht es mit dem*' '
am Ende des zweiten Code-Snippets aus?&:method
Syntax inmap
ist eine übersichtliche Möglichkeit, eine Methode für jedes Element im Array aufzurufen . Sie können dann aufrufenjoin
, um dieses Array in eine Zeichenfolge umzuwandeln. Dies* ' '
ist eine alternative Möglichkeit, Join aufzurufen . Sie können sich vorstellen, die Elemente im Array zu multiplizieren, um eine Zeichenfolge zu erstellen.In Schienen:
ohne Schienen:
ohne Rails (Laden Sie den ActiveSupport von Rails, um die # titleleize-Methode zu patchen
String
)(einige) String-Anwendungsfälle, die von #titleize behandelt werden
#titleize Fallstricke
Rails
titleize
konvertiert Dinge wie Bindestriche und Unterstriche in Leerzeichen und kann zu anderen unerwarteten Ergebnissen führen, insbesondere in Situationen, in denen zwischen Groß- und Kleinschreibung unterschieden wird, wie von @JamesMcMahon hervorgehoben:weil es dazu gedacht ist, Code in Kamelhülle wie folgt zu handhaben:
Um diesen
#downcase
Randfall zu lösen, können Sie Ihren String zuerst bereinigen, bevor Sie #titleize ausführen. Wenn Sie dies tun, werden Sie natürlich alle camelCased-Worttrennungen auslöschen:quelle
"hello world".titleize
welches "Hallo Welt" ausgeben sollte.quelle
"One Two Three Fo Ur"
Ausgabe unterscheidet sich von der gewünschten Ausgabe in diesem Fall, kann jedoch in anderen Fällen erwünscht sein.Eine andere Option ist die Verwendung eines regulären Ausdrucks und eines gsub, die einen Block benötigen:
quelle
.gsub(/\b\w/, &:capitalize)
bewahrt die beabsichtigte Großschreibung in Worten, z. B. "Jane mcCollins"Schauen Sie sich die Methode String # groß an.
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize
quelle
quelle
each
Blocks wird verworfen. Das!
ändert die vonsplit
in-place erzeugten Strings . Ohne die!
,capitalize
würde man neue aktivierte Zeichenfolge pro Iteration erstellen, und es dann sofort zu verwerfen. Das Endergebnis wäre"hello world"
genauso wie die ursprüngliche Zeichenfolge. Mit dem!
wird jede Zeichenfolge imsplit
'd-Array geändert, und daher ist das Ergebnis voneach
ein Array von Zeichenfolgen mit Großbuchstaben.map
. Interessanter Hack. PunkteWenn Sie versuchen, den ersten Buchstaben jedes Wortes in einem Array groß zu schreiben, können Sie einfach Folgendes eingeben:
array_name.map (&: großschreiben)
quelle
Ich habe dies für ein ähnliches Problem verwendet:
Dies behandelt die folgenden seltsamen Fälle, in denen ich die vorherigen Antworten ausprobiert habe:
quelle