Necesito poner el primer carácter de cada palabra en mayúscula, y poner el resto en minúscula ...
manufacturer.MFA_BRAND.first.upcase
solo establece la primera letra en mayúscula, pero necesito esto:
ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four

splitse dividirá en el espacio de forma predeterminada, por lo que puede hacerlo aún más corto:'one TWO three foUR'.split.map(&:capitalize).join(' ').map(&:capitalize)o al menos señalar en qué parte del documento lo encontró? No puedo encontrar ninguna referencia a eso. Además, ¿cuál es el trato con*' 'el final del segundo fragmento de código?&:methodsintaxismapes una forma concisa de llamar a un método en cada elemento de la matriz . Luego puede llamarjoinpara convertir esa matriz en una cadena. El* ' 'es una forma alternativa de llamar a unirse . Puede pensar que multiplica los elementos de la matriz para crear una cadena.En rieles:
sin rieles:
sin Rails (cargue ActiveSupport de rails para parchear el método #titleize
String)(algunos) casos de uso de cadenas manejados por #titleize
#titleize gotchas
Rails
titleizeconvertirá cosas como guiones y guiones bajos en espacios y puede producir otros resultados inesperados, especialmente con situaciones sensibles a mayúsculas y minúsculas como lo señala @JamesMcMahon:porque está destinado a manejar código en camello como:
Para lidiar con este caso límite,
#downcaseprimero puede limpiar su cadena antes de ejecutar #titleize. Por supuesto, si haces eso, eliminarás cualquier separación de palabras en camello:fuente
"hello world".titleizeque debería mostrar "Hola mundo".fuente
"One Two Three Fo Ur"es diferente a la salida deseada en este caso, pero puede ser deseada en otros.Otra opción es usar una expresión regular y gsub, que toma un bloque:
fuente
.gsub(/\b\w/, &:capitalize)conserva las mayúsculas previstas en palabras, por ejemplo, "Jane mcCollins"Mire el método de capitalización String #.
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize
fuente
fuente
eachbloque se descarta. El!está modificando las cadenas producidas porsplitin-place. Sin el!,capitalizeestaría creando una nueva cadena en mayúscula por iteración, y luego la descartaría de inmediato. El resultado final sería"hello world"el mismo que la cadena original. Con el!, cada cadena en lasplitmatriz 'd se está cambiando y, por lo tanto, el resultadoeaches una matriz de cadenas en mayúscula.map. Interesante truco sin embargo. PuntosSi está tratando de poner en mayúscula la primera letra de cada palabra en una matriz, simplemente puede poner esto:
array_name.map (&: capitalize)
fuente
Usé esto para un problema similar:
Esto maneja los siguientes casos extraños que vi probando las respuestas anteriores:
fuente