replace()
메서드는 기본적으로 문자열에서 특정 부분을 찾아 다른 것으로 바꾸는 역할을 한다.
예를 들어, "Hello, World!"라는 문장에서 "World"를 "Earth"로 바꾸고 싶을때
replace() 메서드를 이용할 수 있다.
let str = "Hello, World!";
let newStr = str.replace("World", "Earth");
// "Hello, Earth!"
여기서 "World"
가 찾을 대상이고 "Earth"
가 그 대상을 어떻게 바꿀지를 나타낸다.
만약에 문장 안에 같은 단어가 여러 번 등장하고 그것들 모두를 한 번에 바꾸고 싶다면 정규 표현식(regexp)을 사용한다. 정규 표현식은 패턴을 만들어 그 패턴과 일치하는 모든 것들을 찾아준다. /g
라는 옵션은 'global'의 줄임말로, 전체에서 찾으라는 의미이다.
let str = "Hello, World! World is beautiful.";
let newStr = str.replace(/World/g, "Earth");
// "Hello, Earth! Earth is beautiful."
여기서 /World/g
가 'World'라는 단어를 전체에서 찾아내라는 패턴입니다. 이렇게 replace()
메서드를 활용하면 문자열 내의 일부 또는 전체를 원하는 방식으로 쉽게 변경할 수 있습니다.
정규 표현식에 대해 더 알기!
정규 표현식 내에서 일반적으로 문자 클래스를 나타낼 때 배열을 사용한다. (문자 하나인 경우는 ([]) 생략 가능)
문자 클래스는 대괄호([]) 안에 둘러싸인 문자들의 집합을 의미하며, 그 중 어느 하나와 일치하는지를 확인한다.
예를 들어, [abc]
라는 정규 표현식은 'a', 'b', 'c' 중 어느 하나와 일치하는지 검사한다.
et str = "Hello, World!";
let newStr = str.replace(/[aeiou]/g, '*');
// "H*ll*, W*rld!"
위의 코드에서 /[aeiou]/g
라는 정규 표현식은 모든 모음(a, e, i, o, u)을 찾아내고 이를 '*'로 바꾸라는 의미이다.
따라서 배열과 같이 보이는 대괄호([])가 사용되면 이것은 문자 클래스를 나타내며 그 안에 있는 각각의 문자 중 어느 하나와 매칭되는 경우를 찾는다.