이번 글에서는 문자열을 인수로 받아 특정 조건에 따라 대소문자를 변환하는 자바스크립트(JavaScript) 함수를 작성해 보겠습니다.
요구 사항
함수가 수행해야 할 작업은 다음과 같습니다.
- 문자열의 첫 번째 글자가 대문자라면, 전체 문자열을 모두 대문자로 변환합니다.
- 그렇지 않다면(첫 글자가 소문자라면), 전체 문자열을 모두 소문자로 변환합니다.
구현 코드
먼저 문자열의 첫 글자를 charCodeAt() 메서드로 확인하여 아스키 코드 값이 대문자 범위(A~Z, 즉 65~90)에 속하는지 판별합니다. 이후 조건에 맞게 toUpperCase() 또는 toLowerCase()를 적용하면 됩니다.
const str1 = "This is a normal string";
const str2 = "thisIsACamelCasedString";
const changeStringCase = str => {
let newStr = '';
// 첫 글자의 아스키 코드가 65~90 사이인지 확인 (대문자 여부 판별)
const isUpperCase = str[0].charCodeAt(0) >= 65 && str[0].charCodeAt(0) <= 90;
if (isUpperCase) {
newStr = str.toUpperCase();
} else {
newStr = str.toLowerCase();
}
return newStr;
};
console.log(changeStringCase(str1));
console.log(changeStringCase(str2));실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
THIS IS A NORMAL STRING thisisacamelcasedstring
코드 설명
str[0]: 문자열의 첫 번째 문자에 접근합니다.charCodeAt(0): 해당 문자의 유니코드(아스키) 코드 값을 반환합니다. 영어 대문자 'A'~'Z'는 각각 65~90의 값을 가집니다.toUpperCase(): 문자열 전체를 대문자로 변환합니다.toLowerCase(): 문자열 전체를 소문자로 변환합니다.
더 간결한 방법
삼항 연산자(조건 연산자)를 사용하면 위 함수를 한 줄로 더 깔끔하게 표현할 수 있습니다.
const changeStringCase = str =>
str[0] === str[0].toUpperCase()
? str.toUpperCase()
: str.toLowerCase();이처럼 첫 글자를 직접 대문자와 비교하는 방식을 활용하면 아스키 코드 값을 일일이 계산하지 않고도 동일한 로직을 구현할 수 있습니다. 상황에 맞는 방법을 선택하여 사용하시기 바랍니다.