2 Stimmen

Großschreibung von Titeln

Ich versuche, eine Methode zu schreiben, die Titel in Großbuchstaben umwandelt. Es sollte nicht jedes Wort, sondern nur die großen Wörter umwandeln. Manchmal muss es jedes Wort in Großbuchstaben umwandeln. Vielleicht muss ich eine Ausnahme für die kleinen Wörter hinzufügen. Es ist Teil eines Ruby-Tutorials, und ich kann die Rails titleize-Methode nicht verwenden. Hier ist, was ich bisher habe. Lass mich wissen, ob du helfen kannst.

def titleize(name)
  name.split(" ").each {|word| word.capitalize!}.join (" ")
end

4voto

johnnycakes Punkte 2410

Aufbauend auf Joshs Kommentar:

def titleize(name)
  lowercase_words = %w{a an the and but or for nor of}
  name.split.each_with_index.map{|x, index| lowercase_words.include?(x) && index > 0 ? x : x.capitalize }.join(" ")
end

Es könnte sinnvoll sein, lowercase_words zu einer Konstante zu machen und sie aus der Funktion herauszunehmen, da sie sich nie ändern werden.

1voto

randallreedjr Punkte 340

Dies ist ein sehr kompliziertes Problem, und die Antwort von @johnnycakes ist ein guter Anfang, aber die Liste der lowercase_words ist nicht erschöpfend. Jede Präposition von 4 oder weniger Buchstaben sollte nicht großgeschrieben werden, wie z.B. über, in, auf, als, etc. Außerdem sollte das letzte Wort des Titels immer großgeschrieben werden, zusätzlich zu dem ersten Wort.

Wikipedia hat eine Liste englischer Präpositionen. Dies wird jedoch weiter kompliziert durch die Tatsache, dass einige Wörter sowohl Präpositionen als auch Verben sein können, also würde "I Like You" "like" großschreiben, während "In like Flynn" dies nicht tun würde.

Die Rails titleize Methode scheint jedes Wort großzuschreiben, während das titleize gem eine etwas bessere Arbeit leistet, indem es den tatsächlichen Style-Richtlinien folgt, jedoch immer noch das Präpositionsproblem nicht angeht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X