Подтвердить что ты не робот

Заглавие Lodash (буква в верхнем регистре каждого слова)

Я просматриваю документы lodash и другие вопросы о переполнении стека - в то время как - это несколько собственных способов выполнения этой задачи JavaScript, есть ли способ конвертировать строка в заголовок, используя чисто функции lodash (или, по крайней мере, существующие прототипные функции), так что мне не нужно использовать регулярное выражение или определять новую функцию?

например.

This string ShouLD be ALL in title CASe

должен стать

This string ShouLD be ALL in title CASe
4b9b3361

Ответ 1

Это можно сделать с небольшой модификацией 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>

Ответ 2

_.startCase(_.camelCase(str))

Для текста, не созданного пользователем, это обрабатывает больше случаев, чем принятый ответ

> 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'

Ответ 3

с версией lodash 4.

_.upperFirst(_.toLower(str))

Ответ 4

'This string ShouLD be ALL in title CASe'
  .split(' ')
  .map(_.capitalize)
  .join(' ');

Ответ 5

Здесь можно использовать ТОЛЬКО методы lodash и встроенные методы:

_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)

Ответ 6

На этот вопрос есть смешанные ответы. Некоторые рекомендуют использовать _.upperFirst а некоторые рекомендуют _.startCase.

Знайте разницу между ними.

i) _.upperFirst преобразует первую букву вашей строки, тогда строка может состоять из одного слова или нескольких слов, но единственная первая буква вашей строки преобразуется в верхний регистр.

_.upperFirst('jon doe')

выход:

Jon doe

проверьте документацию https://lodash.com/docs/4.17.10#upperFirst

ii) _.startCase преобразует первую букву каждого слова внутри вашей строки.

_.startCase('jon doe')

выход:

Jon Doe

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

Ответ 7

 var s = 'This string ShouLD be ALL in title CASe';
 _.map(s.split(' '), (w) => _.capitalize(w.toLowerCase())).join(' ')

Если я не пропустил это, lodash не имеет собственных методов нижнего/верхнего регистра.

Ответ 8

Не так лаконично, как @4castle ответ, но описательный и lodash-полный, тем не менее...

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>

Ответ 9

Здесь другое решение для моего варианта использования: "дьявольская магистраль"

Просто:

function titleCase (str) {
  return _.map(str.split(' '), _.upperFirst).join(' ');
}

Использование startCase удалит апостроф, поэтому мне пришлось преодолеть это ограничение. Другие решения казались довольно запутанными. Мне это нравится, потому что он чист, понятен.

Ответ 10

Ниже код будет работать отлично:

var str = "TITLECASE"; _.startCase(str.toLowerCase());

Ответ 11

const titleCase = str =>
  str
    .split(' ')
    .map(str => {
      const word = str.toLowerCase()
      return word.charAt(0).toUpperCase() + word.slice(1)
    })
    .join(' ')

Вы также можете разделить функцию карты, чтобы сделать отдельные слова

Ответ 12

с lodash 4, вы можете использовать _.capitalize()

_.capitalize('JOHN') Он возвращает "Джон"

Подробнее см. Https://lodash.com/docs/4.17.5#capitalize.