예를 들어, 첫 번째 인수로 문자열과 그 이후에 임의의 수의 단어를 받아들이는 translate() 함수를 작성해야 한다고 가정해 보겠습니다.
문자열은 실제로 다음과 같은 n $ 기호를 포함합니다 -
이 $0은 $1에 $2가 추가됩니다. 그러면 해당 위치를 대체할 3개의 문자열이 있습니다.
예를 들어 -
함수 호출이 다음과 같으면 -
translate('이 $0은 $2보다 $1 더 많습니다.', 'game', 'than', 'game');
함수의 출력은 다음과 같아야 합니다. -
이 게임은 단순한 게임 그 이상입니다.
이 기능은 JavaScript에 삽입하는 템플릿과 거의 비슷합니다.
따라서 이 함수의 코드를 작성해 보겠습니다 -
여기서는 String.prototype.replace() 메서드를 사용합니다. 정규식 패턴을 사용하여 모든 항목을 일치시키고 함수를 두 번째 매개변수로 사용하면 각 일치에 대해 실행된다는 것을 알고 있습니다. 여기에서도 똑같이 할 것입니다.
이 작업을 수행하는 코드는 -
입니다.예시
const str ='이 $0은 $2에 불과한 $1입니다.';const translate =(str, ...texts) => { const regex =/\$(\d+)/gi; return str.replace(regex, (item, index) => { return texts[index]; });};console.log(translate(str, 'game', 'just', 'game'));사전>출력
콘솔의 출력은 다음과 같습니다. -
이 게임은 단순한 게임입니다