javascript - regular - letra capital jquery
Lodash title case(primera letra mayúscula de cada palabra) (12)
Estoy revisando los documentos de lodash y otras preguntas de desbordamiento de pila, aunque hay varias formas nativas de JavaScript para realizar esta tarea , ¿hay alguna forma de convertir una cadena en mayúsculas y minúsculas usando funciones puramente lodash (o al menos funciones prototípicas existentes) para no tener que usar una expresión regular o definir una nueva función?
p.ej
This string ShouLD be ALL in title CASe
debe convertirse
This String Should Be All In Title Case
Aquí hay otra solución para mi caso de uso: "la columna vertebral del diablo"
Simplemente:
function titleCase (str) {
return _.map(str.split('' ''), _.upperFirst).join('' '');
}
El uso de startCase eliminaría el apóstrofe, por lo que tuve que evitar esa limitación. Las otras soluciones parecían bastante complicadas. Me gusta esto ya que es limpio, fácil de entender.
Aquí hay una manera de usar SOLO métodos lodash y no métodos incorporados:
_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)
El siguiente código funcionará perfectamente:
var str = "TITLECASE"; _.startCase (str.toLowerCase ());
Esto se puede hacer con una pequeña modificación de
startCase
:
_.startCase(_.toLower(str));
console.log(_.startCase(_.toLower("This string ShouLD be ALL in title CASe")));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>
Hay respuestas mixtas a esta pregunta.
Algunos recomiendan usar
_.upperFirst
mientras que otros recomiendan
_.startCase
.
Conoce la diferencia entre ellos.
i)
_.upperFirst
transformará la primera letra de su cadena, luego la cadena puede ser de una sola palabra o varias palabras, pero la única primera letra de su cadena se transforma en mayúscula.
_.upperFirst(''jon doe'')
salida:
Jon doe
consulte la documentación https://lodash.com/docs/4.17.10#upperFirst
ii)
_.startCase
transformará la primera letra de cada palabra dentro de su cadena.
_.startCase(''jon doe'')
salida:
Jon Doe
No tan conciso como la respuesta de @ 4castle, pero descriptivo y completo, sin embargo ...
var basicTitleCase = _
.chain(''This string ShouLD be ALL in title CASe'')
.toLower()
.words()
.map(_.capitalize)
.join('' '')
.value()
console.log(''Result:'', basicTitleCase)
console.log(''Exact Match:'' , basicTitleCase === ''This String Should Be All In Title Case'')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>
con lodash 4, puede usar _.capitalize ()
_.capitalize(''JOHN'')
Devuelve ''John''
Ver https://lodash.com/docs/4.17.5#capitalize para más detalles.
con lodash versión 4.
_.upperFirst(_.toLower(str))
const titleCase = str =>
str
.split('' '')
.map(str => {
const word = str.toLowerCase()
return word.charAt(0).toUpperCase() + word.slice(1)
})
.join('' '')
También puede dividir la función de mapa para hacer palabras separadas
var s = ''This string ShouLD be ALL in title CASe'';
_.map(s.split('' ''), (w) => _.capitalize(w.toLowerCase())).join('' '')
A menos que me lo haya perdido, lodash no tiene sus propios métodos de mayúsculas y minúsculas.
_.startCase(_.camelCase(str))
Para el texto no generado por el usuario, esto maneja más casos que la respuesta aceptada
> startCase(camelCase(''myString''))
''My String''
> startCase(camelCase(''my_string''))
''My String''
> startCase(camelCase(''MY_STRING''))
''My String''
> startCase(camelCase(''my string''))
''My String''
> startCase(camelCase(''My string''))
''My String''
''This string ShouLD be ALL in title CASe''
.split('' '')
.map(_.capitalize)
.join('' '');