문제
문자열을 입력받아 해당 문자열에 포함된 모든 점(.)을 대시(-)로 교체하는 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, '-');
두 방법 모두 동일한 결과를 출력하며, 코드 길이와 유지보수 측면에서는 내장 메서드를 사용하는 방식이 권장됩니다.