web-dev-qa-db-ger.com

Wie wird der erste Buchstabe jedes Wortes in der Zeichenfolge groß geschrieben?

So schreiben Sie den ersten Buchstaben jeder Welt in der Zeichenfolge in Ruby on Rails:

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

Ich möchte die Ausgabe wie:

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

titleize entfernt den Unterstrich und die Bindestriche, aber ich möchte es in der Zeichenfolge behalten.

13
kashif

sie können den .titleize einfach so verwenden "i want to make the first letter of each work into a cap".titleize

sie können mehr über titleize von den Apidocks erfahren

titleize (Word) public

Schreibt alle Wörter groß und ersetzt einige Zeichen in der Zeichenfolge, um einen schöneren Titel zu erzeugen. titleize ist für die Erstellung einer schönen Ausgabe gedacht. Es wird nicht in den Internen von Rails verwendet.

titleize ist auch ein Alias ​​als titlecase.

Beispiele:

"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"

wie diese Aktualität funktioniert 

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

Um tatsächlich in den Arbeiten "-" zu bleiben, können wir der String-Klasse eine neue Methode hinzufügen.

# ./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

Sie können die richtige Methode selbst implementieren:

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

Und wenn Sie wie ich gerade jetzt den ersten Buchstaben auch für gestrichelte Wörter groß schreiben möchten, können Sie dies folgendermaßen tun:

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.

Fügen Sie die .capitalize-Methode zu Ihrem String hinzu, damit der erste Buchstabe automatisch groß geschrieben wird.

0
ajknzhol