[javascript] Lodash 제목 케이스 (모든 단어의 첫 글자 대문자)

lodash 문서 및 기타 Stack Overflow 질문을 살펴보고 있습니다. 이 작업을 수행하는 몇 가지 기본 JavaScript 방법 이 있지만 순수하게 lodash 함수 (또는 최소한 기존 프로토 타입 함수)를 사용하여 문자열을 제목 케이스로 변환 할 수있는 방법이 있습니까? 정규식을 사용하거나 새 함수를 정의 할 필요가 없도록?

예 :

This string ShouLD be ALL in title CASe

되어야한다

This String Should Be All In Title Case



답변

다음을 약간 수정하여 수행 할 수 있습니다 startCase.

_.startCase(_.toLower(str));


답변

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


답변

lodash 버전 4.

_.upperFirst(_.toLower(str))


답변

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


답변

이 질문에 대한 대답은 엇갈립니다. 일부는 사용 _.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


답변

다음은 lodash 메서드 만 사용하고 내장 메서드는 사용하지 않는 방법입니다.

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


답변

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

지도 기능을 분리하여 별도의 단어를 수행 할 수도 있습니다.