이번 글에서는 문자열과 숫자 k를 입력받아, 해당 문자열에서 처음 k개의 문자를 제거한 새로운 문자열을 반환하는 JavaScript 함수를 작성해 보겠습니다.
예를 들어, 원본 문자열이 다음과 같다고 가정해 봅시다.
const str = "this is a string"
여기서 n = 4라면,
n = 4
출력 결과는 다음과 같아야 합니다.
const output = " is a string"
예제 코드
위 요구 사항을 구현한 코드는 다음과 같습니다.
const str = 'this is a string';
const removeN = (str, num) => {
const { length } = str;
if(num > length){
return str;
};
const newStr = str.substr(num, length - num);
return newStr;
};
console.log(removeN(str, 3));실행 결과
콘솔에 출력되는 결과는 아래와 같습니다.
s is a string
코드 동작 원리
함수가 어떤 순서로 처리되는지 단계별로 살펴보겠습니다.
- 길이 확인: 구조 분해 할당(Destructuring)을 활용해 문자열의 전체 길이를
length변수에 저장합니다. - 예외 처리:
num이 문자열 길이보다 크면 잘라낼 문자가 존재하지 않으므로, 원본 문자열을 그대로 반환합니다. - 문자열 자르기:
substr()메서드를 사용해 인덱스num부터 문자열 끝까지의 부분 문자열을 추출합니다.
slice()를 활용한 더 간결한 방법
참고로 substr()은 현재 ECMAScript 표준에서 폐기(deprecated)된 메서드이므로, 최신 프로젝트에서는 slice() 사용이 권장됩니다. slice()를 활용하면 위 로직을 한 줄로 줄일 수 있습니다.
const removeN = (str, num) => str.slice(num);
console.log(removeN('this is a string', 3)); // 's is a string'slice(num)은 인덱스 num 위치부터 문자열 끝까지의 모든 문자를 반환하므로, 별도의 길이 계산 없이도 동일한 결과를 얻을 수 있습니다. 다만 num이 문자열 길이보다 클 경우 slice()는 빈 문자열('')을 반환한다는 점이 기존 코드와 다르므로, 원본 유지 여부 등 요구 사항에 맞게 적절히 선택하시기 바랍니다.