JavaScript에서 문장의 제목을 지정하는 방법

2495 단어 javascripttutorial
우리는 최근에 애플리케이션에서 사용되는 모든 이메일 템플릿을 다시 실행하는 프로세스를 진행하는 작업 시나리오에 직면했습니다. 우리가 재설계한 템플릿이 300개가 넘었습니다. 작업을 마친 후 누군가 인쇄 헤드라인에서와 같이 제목 줄을 제목으로 변경해 달라고 요청했습니다. 300개 이상의 모든 템플릿을 수동으로 변경하고 싶지 않았기 때문에 프로세스를 자동으로 처리하는 이 빠른 기능을 작성했습니다.

제목 케이스는 무엇입니까



언뜻 보면 제목 줄에 있는 모든 단어의 첫 글자는 대문자로, 나머지 단어는 소문자로 만들고 싶었던 것처럼 들릴 수 있습니다.

거의 맞습니다. 특정 단어가 대문자로 표시되는 것을 원하지 않습니다. a , an 또는 and 와 같은 단어는 소문자로 유지하려고 했습니다.

다음은 이 전환을 처리하기 위해 제가 만든 빠른 함수입니다.

먼저 이메일 제목에 소문자로 남기를 원하는 단어 배열을 만들었습니다.

const small_words = ['a', 'an', 'and', 'as', 'at', 'but', 'by', 'for', 'if', 'in', 'into', 'nor', 'of', 'on', 'or', 'out', 'so', 'the', 'to', 'up', 'yet', 'and', 'as', 'at', 'but', 'by', 'for', 'if', 'in', 'into', 'nor', 'of', 'on', 'or', 'out', 'so', 'the', 'to', 'up', 'yet'];


다음으로 제목 줄의 텍스트를 전달하는 함수를 만들었습니다. 이 문자열을 배열의 항목인 주제의 각 단어가 있는 배열로 나눕니다. 이제 배열이 있으므로 모든 단어를 반복할 수 있습니다. 단어가 small_words 배열의 항목과 일치하면 소문자로 변환합니다. 그렇지 않으면 단어의 첫 번째 문자를 대문자로 표시하고 나머지는 소문자로 표시합니다.

내가 설명해야 하는 한 가지 예외가 있는데 그것은 주제 텍스트의 첫 글자입니다. 첫 단어가 무엇이든 관계없이 첫 글자를 대문자로 표시하고 싶습니다.

이러한 요구 사항에 따라 내 기능은 다음과 같습니다.

const titleize = (title) => {
  return title.split(' ').map((word, index) => {
    if (index !== 0 && small_words.includes(word)) {
      return word.toLowerCase();
    } else {
      return word[0].toUpperCase() + word.slice(1).toLowerCase();
    }
  }).join(' ');
}


기능을 테스트하기 위해 3개의 제목을 추가하고 console.log에 새 제목을 추가했습니다.

console.log(titleize('notes on a scandal'));  // Notes on a Scandal
console.log(titleize('a good man is hard to find')); // A Good Man Is Hard to Find
console.log(titleize('midnight in the garden of good and evil')); // Midnight in the Garden of Good and Evil


제목 줄의 각 테스트에 대한 출력을 볼 수 있습니다.

인쇄 제목 서식을 기반으로 문자열에 제목을 지정해야 하는 경우 이 기능을 사용할 수 있습니다. 소문자로 유지하려면 단어 목록을 포함하도록 small_words 배열을 편집하기만 하면 됩니다.

좋은 웹페이지 즐겨찾기