문제

문제 링크
image

나의 풀이

코드

function solution(my_string, alp) {
    const regex = new RegExp(`[${alp}]`, 'g');
    return my_string.replace(regex, alp.toUpperCase());
}

다른 사람 풀이

대부분 풀이가 유사하여 생략.

알게 된 것 / 리마인드

변수를 정규식에 활용하기

맨날 까먹기 때문에 리마인드 겸 정리한다.
동적으로 바뀌는 값(변수 안에 든 값 등)을 정규식 규칙으로 활용하려면, 새로운 RegExp 객체를 생성해 사용해야 한다.
템플릿 리터럴로 작성하면 된다.

const val = 'abcde';
const regex = new RegExp(`[${val}]`, g); // /[abcde]/g 인 새로운 정규식 객체 생성

String.prototype.replace()의 동작

이것도 맨날 까먹기 때문에 다시 정리한다.
아래의 내용이 결국 원시값의 불변성에 의한 자연스러운 동작 형태인데, 항상 잊는 것 같다.

// String.prototype.replace() 기본 형태
replace(pattern, replacement)
  • replace 메서드는 원본 문자열을 변화시키지 않는다.

    원본 문자열은 수정되지 않는다. (The original string is left unchanged.) (출처: MDN)

  • replace 메서드는 첫 인자로 주어진 pattern에 의해 일부가 대체된 문자열을 새로 반환한다.

    String의 메서드인 replace는 pattern에 대한 한 개, 일부, 또는 모든 일치 부분을 replacement로 바꾼 새로운 문자열을 반환한다. (The replace() method of String values returns a new string with one, some, or all matches of a pattern replaced by a replacement.) (출처: MDN)


레퍼런스

정규식 초기화

String.prototype.replace()