sea regular que primera palabra mayusculas mayuscula letra hacer expresion convertir capitalizar capital cada javascript lodash

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

https://lodash.com/docs/4.17.10#startCase


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 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('' '');