Je regarde les documents lodash et d’autres questions relatives à Stack Overflow - bien qu’il y ait il existe plusieurs manières JavaScript natives d’accomplir cette tâche , y at-il un moyen de convertir une chaîne en cas de titre en utilisant pursement fonctions lodash (ou au moins fonctions prototypes existantes) pour que je n’aie pas à utiliser une expression régulière ni à définir une nouvelle fonction?
par exemple.
This string ShouLD be ALL in title CASe
devraient devenir
This String Should Be All In Title Case
_.startCase(_.camelCase(str))
Pour le texte non généré par l'utilisateur, cela traite plus de cas que la réponse acceptée
> 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(' ');
Voici une méthode utilisant UNIQUEMENT les méthodes lodash et aucune méthode intégrée:
_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)
Voici une autre solution pour mon cas d'utilisation: "Dorsale"
Simplement:
function titleCase (str) {
return _.map(str.split(' '), _.upperFirst).join(' ');
}
L'utilisation de startCase supprimait l'apostrophe. Je devais donc contourner cette limitation. Les autres solutions semblaient assez compliquées. J'aime ça car c'est propre, facile à comprendre.
Le code ci-dessous fonctionnera parfaitement:
var str = "TITLECASE"; _. startCase (str.toLowerCase ());
var s = 'This string ShouLD be ALL in title CASe';
_.map(s.split(' '), (w) => _.capitalize(w.toLowerCase())).join(' ')
Sauf si je l’ai manqué, lodash n’a pas ses propres méthodes majuscules/minuscules.
const titleCase = str =>
str
.split(' ')
.map(str => {
const Word = str.toLowerCase()
return Word.charAt(0).toUpperCase() + Word.slice(1)
})
.join(' ')
Vous pouvez également diviser la fonction map pour faire des mots séparés
Pas aussi concis que la réponse de @ 4castle, mais descriptif et complet, néanmoins ...
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>