Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열의 대문자 사용이 올바른지 확인하는 방법

이 문제에서는 단어 안에서 대문자가 올바르게 사용되었는지를 판단하는 기준을 다음 세 가지 규칙으로 정의합니다.

  • 모든 글자가 대문자인 경우 — 예: "INDIA"
  • 대문자가 전혀 없는 경우(모든 글자가 소문자) — 예: "example"
  • 첫 글자만 대문자인 경우 — 예: "Ramesh"

요구 사항은 문자열을 하나 입력받아, 해당 문자열이 위 세 가지 규칙 중 하나라도 만족하는지 판별하는 JavaScript 함수를 작성하는 것입니다.

규칙을 만족하면 true를 반환하고, 하나도 만족하지 않으면 false를 반환하면 됩니다.

구현 예시

const detectCapitalUse = (word = '') => {
   let allCap = true;
   for (let i = 0; i < word.length; i++){
      if (word.charAt(i) === word.charAt(i).toUpperCase()){
         if (allCap) continue;
            else return false;
      }
      else {
         if (allCap && i > 1)
            return false;
         else allCap = false;
      };
   };
   return true;
};
console.log(detectCapitalUse('INDIA'));
console.log(detectCapitalUse('jdsdS'));
console.log(detectCapitalUse('dsdsdsd'));

동작 원리

이 함수는 allCap이라는 불리언 플래그를 사용해 지금까지 확인한 문자들이 모두 대문자인지 추적합니다. 반복문을 순회하면서 현재 문자가 대문자일 때는 allCap이 참이면 계속 진행하고, 그렇지 않으면 규칙 위반이므로 즉시 false를 반환합니다.

반대로 소문자를 만났을 때는 상황이 조금 다릅니다. 앞선 문자들이 모두 대문자였고(allCap === true) 현재 위치가 인덱스 1을 초과한다면, 이는 "첫 글자만 대문자" 규칙도 어긴 것이므로 false를 반환합니다. 인덱스 1 이하라면 아직 "첫 글자만 대문자" 형태일 수 있으므로 allCapfalse로 바꾸고 계속 진행합니다.

출력 결과

콘솔에는 아래와 같은 결과가 출력됩니다.

true
false
true

'INDIA'는 모든 글자가 대문자이므로 true가 반환되고, 'jdsdS'는 끝에 대문자가 섞여 있어 어떤 규칙도 만족하지 못하므로 false가 반환됩니다. 'dsdsdsd'는 모든 글자가 소문자이므로 역시 true가 반환됩니다.