udemy, The Complete JavaScript Course 2021: From Zero to Expert!
string을 Title case capitalization 하는 함수 만들기
// this is a nice title -> This Is a Nice Title
const convertTitleCase = function (title) {
const capitalized = str => str.replace(str[0], str[0].toUpperCase());
const exceptions = ['a', 'an', 'the', 'and', 'but', 'with', 'on', 'in'];
const titleCase = title
.toLowerCase()
.split(' ')
.map(word => (exceptions.includes(word) ? word : capitalized(word)))
.join(' ');
return capitalized(titleCase);
};
console.log(convertTitleCase('this is a nice title'));
console.log(convertTitleCase('this is a LONG title but not too long'));
console.log(convertTitleCase('and here is another title with an EXAMPLE'));
제일 앞의 문자를 대문자로 바꾸지 않을 예외를 변수로 만들고 그걸 새로이 array로 도출하는 과정에서 제외시키는 걸 Conditional(ternary) operator로 만든다. 강의를 보기 전에 variable exceptions를 word.includes(exceptions)로 코드를 짰더니 'another'에도 'an'이 들어가서 이것 역시 소문자로 출력하더라. 그래서 어떻게 해야 another를 제외시킬 수 있을까 봤더니 word에서 exceptions을 찾아보는 게 아닌, exceptions에 word가 포함되면 제외시키는 걸로 했더니 원하는 대로 출력이 되었다-!
그리고 문장 첫 시작의 단어가 exceptions에 포함 되더라도 대문자로 시작할 수 있도록 capitalized라는 함수를 만들어서 array method chain에 한 번 쓰고, return할 때 한 번 더 쓰면 세 번째 string의 'and...'는 'And...'로 출력된다.
'Front End > JavaScript' 카테고리의 다른 글
[Vanilla JS] input에서 선택한 이미지 미리보기 (0) | 2021.10.04 |
---|---|
[JS] Operations with Dates (0) | 2021.06.30 |
[JS] Avoid callback hell, Promise (0) | 2021.06.20 |
[JS] Object-Oriented Programming (OOP) (0) | 2021.06.16 |
[JS] Constructor Function : Prototype chain (0) | 2021.06.15 |
댓글