📌 replace() / 모든 문자열 치환하기
replace()
는 알고리즘을 풀던 도중 특정 문자열에서 특정 문자만 변환해야 하는 상황에 사용을 하려했다. 하지만, 인자로 어떤 값을 보내야 하는지, 기억이 잘나지 않아 오늘 정리하려한다. 추가적으로 어떤 특징을 가지고 있는지, 그리고 내가 몰랐던 부분은 어떤 것이지 알아보는 기회가 될 것이다.
자바스크립트의 문자열에서 '특정 문자열을 찾아 치환'해주는 방법이다.
영어 단어 뜻 그대로 특정 문자열을 '대체'하는 것이다. 해당 메서드를 통해 원하는 문자를 변환할 수 있어 문자열을 다룰 때 매우 유용하다.
string.replace(searchValue, newValue)
searchValue
에는 문자를 치환할 문자열에서 원하는 문자를 넣는다. 즉, 어떤 문자를 바꿀거니?라는 의미이다. 다음으로 newValue
는 앞서 선택한 문자를 어떤 문자로 바꿀 것인지 선택하는 것이다.
결론적으로, ( 원본 배열에서 바꾸고 싶은 문자, 새롭게 바꾸고 싶은 문자 )가 되는 것이다.
1. replace()는 원래의 문자열을 변경하지 않고 치환된 문자열을 리턴한다.
let code = 'I Love Javascript'; let change = code.replace('Javascript', 'Typescript'); console.log(code); // 'I Love Javascript' console.log(change); // 'I Love Typescript'
2. replace()는 문자열에서 첫번째로 찾는 문자열만 치환해준다.
따라서, 일치하는 모든 문자를 치환하려면 다른 메소드를 사용해야한다.
let code = 'I like Apple I like Banna'; let change = code.replace('like', 'hate'); console.log(change); // 'I hate Apple I like Banna'
3. replace는 대소문자를 구분한다.
따라서, 치환하려는 문자열이 정확히 일치해야 문자열을 치환할 수 있다.
let code = 'I like Apple I like Banna'; let change = code.replace('Like', 'hate'); console.log(change); // 'I like Apple I like Banna'
앞서 살펴본 replace()의 특징 중에는 문자열에서 첫번째로 찾은 문자열을 치환해준다는 특징이 있다. 즉, 만약 바꾸려는 문자열이 중복하여 원본 문자열에 존재한다면 인덱스 기준으로 앞에 있는 인덱스만 치환이 된다는 것이다.
따라서, 나는 혹시나 하는 마음에 replaceAll()이라는 메소드가 있지 않을까?라는 생각으로 찾아봤지만 아쉽게도 그런 메소드는 존재하지 않았다.
따라서, replace()를 활용하여 모든 문자열을 치환하려면 어떻게 해야 하는지 알아보도록 해보자.
정규식을 활용하여 모든 문자열 치환하기
정규식에 대한 세부적인 내용은 향후 더 알아보도록 하자.
당장 아래의 정규식을 해석해보자면 정규식은 / /
으로 감싸서 정규식이라는 것을 나타내며, 뒤에 붙은 g
는 글로벌이라는 의미의 해당 문자열에서 모든 것을 포함한다는 의미이다. 나중에 정규식에 대해 더 알아볼 시간을 가져보고 당장은 이정도로 정리하고 넘어가도록 하겠다.
let sport = 'soccer, basketball, baseball, soccer'; let change = sport.replace(/soccer/g, 'swimming'); console.log(sport); // 'soccer, basketball, baseball, soccer' console.log(change); // 'swimming, basketball, baseball, swimming'
오늘은 그동안 사용하면서 제대로 알지 못하고 사용했던 replace()
에 대해서 공부하는 시간을 가져봤다. 요즘 TIL을 작성하며 나의 실력이 조금씩 늘어가는 것을 알고리즘 문제를 풀때 느끼는 것 같다. 이전에는 생각도 못한 방법으로 접근하는 것을 보며, 점점 알고리즘이 재밌어지고 있다. 물론 문제에 막혀 한두시간씩 고민하는 시간은 매우 고통스럽지만 말이다. 그래도 항상 긍정적으로 생각하는게 중요한것 같다. 언젠가는 프로그래머스 3단계 문제도 푸는 날이 왔으면 좋겠다. 그날까지 화이팅!!!