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

JavaScript 문자열에서 공백(Whitespace) 완전히 제거하는 방법

문제 개요

JavaScript에서는 문자열에 포함된 모든 공백(whitespace)을 제거한 새로운 문자열을 반환하는 함수를 작성해야 하는 경우가 자주 있습니다. 예를 들어 사용자 입력값을 정리하거나, 데이터를 비교하기 전에 형식을 통일할 때 이런 처리가 유용하게 활용됩니다.

반복문을 이용한 기본 구현

가장 기본적인 접근 방식은 문자열을 한 글자씩 순회하면서 공백이 아닌 문자만 새로운 문자열에 이어 붙이는 것입니다. 아래 예제 코드를 살펴보겠습니다.

const str = "This is an example string from which all whitespaces will be removed";
const removeWhitespaces = str => {
  let newStr = '';
  for(let i = 0; i < str.length; i++){
    if(str[i] !== " "){
      newStr += str[i];
    }else{
      newStr += '';
    };
  };
  return newStr;
};
console.log(removeWhitespaces(str));

이 코드는 원본 문자열을 처음부터 끝까지 차례대로 검사하면서, 각 문자가 공백(" ")이 아닌 경우에만 결과 문자열에 추가합니다. 그 결과 모든 공백이 걸러진 문자열이 최종적으로 반환됩니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

Thisisanexamplestringfromwhichallwhitespaceswillberemoved

정규표현식을 활용한 더 간결한 방법

실무에서는 replace() 메서드와 정규표현식을 조합하면 한 줄로 동일한 작업을 처리할 수 있습니다.

const removeWhitespaces = str => str.replace(/\s/g, '');
console.log(removeWhitespaces(str)); // Thisisanexamplestringfromwhichallwhitespaceswillberemoved

여기서 \s는 일반적인 공백뿐만 아니라 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r) 등 모든 종류의 공백 문자를 의미합니다. 또한 플래그 g(global)는 문자열 전체에서 일치하는 모든 부분을 치환하도록 지정하는 역할을 합니다.

참고: 다른 대안들

  • str.split(' ').join('') : 공백을 기준으로 문자열을 나눈 뒤 다시 하나로 합치는 방식입니다.
  • str.replaceAll(' ', '') : ES2021에서 도입된 메서드로, 일반 공백을 한 번에 모두 치환할 수 있습니다.

마무리

반복문 방식은 내부 동작을 이해하기에는 좋지만, 실제 프로젝트에서는 가독성과 성능 면에서 replace(/\s/g, '')처럼 정규표현식을 활용하는 방법이 권장됩니다. 상황에 맞게 적절한 방식을 선택해 사용하시기 바랍니다.