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

JavaScript로 문자열의 점(.)을 대시(-)로 바꾸는 방법

문제

문자열을 입력받아 해당 문자열에 포함된 모든 점(.)을 대시(-)로 교체하는 JavaScript 함수를 작성해야 합니다.

입력

const str = 'this.is.an.example.string';

출력

const output = 'this-is-an-example-string';

즉, 문자열 str에 등장하는 모든 점(.)이 대시(-)로 대체되어야 합니다.

예제 코드

다음은 반복문을 사용한 구현 예시입니다.

const str = 'this.is.an.example.string';
const replaceDots = (str = '') => {
  let res = "";
  const { length: len } = str;
  for (let i = 0; i < len; i++) {
    const el = str[i];
    if (el === '.') {
      res += '-';
    } else {
      res += el;
    }
  }
  return res;
};
console.log(replaceDots(str));

코드 설명

위 코드는 문자열 str을 한 글자씩 순회하면서 현재 문자가 점(.)인지 검사합니다. 점이라면 결과 문자열 res에 대시(-)를 추가하고, 그렇지 않으면 원래 문자를 그대로 이어 붙입니다. 모든 문자를 처리한 뒤 완성된 문자열을 반환합니다.

실행 결과

this-is-an-example-string

더 간단한 방법: replaceAll() 활용

실무에서는 반복문을 직접 작성하기보다 replaceAll() 메서드를 사용하는 것이 훨씬 간결하고 가독성이 좋습니다.

const str = 'this.is.an.example.string';
const result = str.replaceAll('.', '-');
console.log(result); // this-is-an-example-string

정규 표현식과 replace()를 조합할 수도 있습니다. 이때 점(.)은 정규식에서 임의의 문자를 의미하는 특수 문자이므로 반드시 역슬래시(\)로 이스케이프해야 합니다.

const result = str.replace(/\./g, '-');

두 방법 모두 동일한 결과를 출력하며, 코드 길이와 유지보수 측면에서는 내장 메서드를 사용하는 방식이 권장됩니다.