제네릭으로 원본문자열 S
와 교체당하는 문자 From
, 교체 하려는 문자 To
를 받아서 문자열 S
에 존재하는 모든 From
을 To
로 변환한다.
저번에 Replace
메서드를 구현해봐서 그런지 어렵지 않았다. 재귀를 응용하는 게 핵심이다.
type ReplaceAll<S extends string, From extends string, To extends string> = From extends ''
? S : S extends `${infer left}${From}${infer right}`
? `${ReplaceAll<left,From,To>}${To}${ReplaceAll<right,From,To>}` : S
여담이지만 분할정복은 개발자로서 필요한 덕목이 아닐까 싶다.
어떤 알고리즘 or 문제든 작은 단위로 쪼개서 해결하다보면 어느새 문제는 해결되어있으니...
작게 작게 쪼개서 생각하는 습관을 조금씩 들여보자