javascript - replaceAll()

so.oy·2023년 6월 26일
0

Today's Study📚 

목록 보기
5/5
post-thumbnail

String.prototype.replaceAll()

프로그래머스 문제를 풀다가 replaceAll()이라는 메소드를 발견하여 알아보았다. 또한 replace()와의 차이가 궁금해 정리해 보았다.


문제명: rny_string

먼저 해당 코딩테스트 문제는 다음과 같다.

문제 설명

'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 1 ≤ rny_string의 길이 ≤ 100
  • rny_string은 영소문자로만 이루어져 있습니다.

입출력 예

rny_stringresult
"masterpiece""rnasterpiece"
"programmers""prograrnrners"
"jerry""jerry"
"burn""burn"

즉, 문자열에 m이 있으면 그것을 rn으로 바꾸어 return 하는 것이다.

👉 해당 문제 풀이 보러가기

https://github.com/sooyv/Programmers-Algorithm-JS/commit/455734a9270b72a5371d2a824c8761461d6285c3


먼저 replaceAll()에 대한 MDN의 설명을 찾아보았다. MDN에 따르면 설명은 다음과 같다.

구문

replaceAll(pattern, replacement)

매개변수

pattern

문자열이거나 Symbol.replace(en-US) 메서드가 있는 객체일 수 있습니다. 일반적인 예로 정규식이 있습니다. Symbol.replace 메서드가 없는 모든 값은 문자열로 강제 변환됩니다.

pattern이 정규식이면 전역(g) 플래그가 설정되어 있어야 합니다. 그렇지 않으면 TypeError가 발생합니다.

replacement

문자열이거나 함수일 수 있습니다. 교체는 String.prototype.replace()와 동일한 의미 체계를 갖습니다.

반환값

패턴의 모든 일치 항목이 교체자로 대체된 새 문자열입니다.


replaceAll()은 String객체에 추가된 새로운 메소드이다. 역할은 문자열에서 특정 문자를 지정한 문자열로 변경하는 역할을 한다.

이것과 비슷한 역할을 하는 메소드로 replace()메소드가 있는데, replace()는 정규식을 통해 찾은 문자열을 지정한 문자열로 바꾸는 역할을 한다.

하지만 replaceAll()을 이용하면, 문자열을 직접 지정해서 바꿔버릴수 있기 때문에 더욱 편리하게 사용이 가능하다.

replace()

또한, 공부를 하던 중 replace()에 대해 더욱 자세히 알 수 있었다. replace()의 예시를 보자.

위와 같이, “m”을 “rn”으로 바꾸었을 때, “mom”의 “rnom”은 바뀌지 않았다. 즉, replace()의 경우 첫번째 문자만 변경이 되는 것을 확인하였다.

replaceAll()

하지만 replaceAll()의 경우 해당 문자열 전체를 바꾼다.

이렇게 편리하게 사용할 수 있는 replaceAll()이지만, ES2021이 도입되지 않은 곳에서는 메서드를 사용 할 수 없다는 문제점이 있었다. 따라서 또 다른 방법으로 replaceAll()을 구현해 보았다.

replaceAll() 구현하기

replaceAll()을 사용하기 위한 방법은 split()과 join()을 사용하는 것이다.

  • split을 통해 전체 문자열을 작성한 문자열을 기준으로 나눠 배열로 저장한다.
let str = "hello mom";
str = str.split("m");
console.log(str);
// ['hello ', 'o', '']
  • join()을 사용하여 만든 배열을 하나의 문자열로 합쳐준다.

‘m’을 “rn”으로 바꿔줘야하는 것이기 때문에, 배열 사이에 “rn”을 추가한다.

let str = "hello mom";
str = str.split("m");
str = str.join("rn");
console.log(str);
// hello rnorn

정리

 문자열.split(”찾을 문자열”).join(”바꿀 문자열”);

과 같이 replaceAll를 대체하여 사용할 수 있다.

let str = "hello mom";
str = str.split("m").join("rn");
console.log(str);
// hello rnorn

👉 해당 문제 풀이 보러가기

https://github.com/sooyv/Programmers-Algorithm-JS/commit/455734a9270b72a5371d2a824c8761461d6285c3

profile
🌱 개발공부로그

0개의 댓글