Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

문자열 JavaScript의 n번째 발생을 대체할 폴리필 만들기

<시간/>

3개의 인수, 즉 -

를 취하는 폴리필 함수 removeStr()을 생성했다고 가정해 보겠습니다.
  • subStr → 제거할 문자열의 발생

  • num → 문자열에서 제거되는 subStr의 숫자(num)번째 발생입니다.

문자열에서 subStr이 성공적으로 제거되면 함수는 new를 반환해야 하고, 그렇지 않으면 모든 경우에 -1을 반환해야 합니다.

예를 들어 -

const str = 'drsfgdrrtdr';
console.log(str.removeStr('dr', 3));

예상 출력 -

'drsfgdrrt'

이에 대한 코드를 작성해 보겠습니다 -

예시

const str = 'drsfgdrrtdr';
const subStr = 'dr';
const num = 2;
removeStr = function(subStr, num){
   if(!this.includes(subStr)){
      return -1;
   }
   let start = 0, end = subStr.length;
   let occurences = 0;
   for(; ;end < this.length){
      if(this.substring(start, end) === subStr){
         occurences++;
      };
      if(occurences === num){
         return this.substring(0, start) + this.substring(end,
         this.length);
      };
      end++;
      start++;
   }
   return -1;
}
String.prototype.removeStr = removeStr;
console.log(str.removeStr(subStr, num));

출력

콘솔에서 이 코드의 출력은 -

입니다.
drsfgrtdr

코드 이해하기 -

  • removeStr() 함수는 먼저 subStr이 한 번도 발생하지 않는지 확인하고 종료하고 -1을 반환해야 합니다.

  • 그런 다음 슬라이딩 윈도우 알고리즘을 사용하여 subStrin 문자열(윈도우의 크기는 subStr의 길이와 동일함)의 발생 횟수를 기록합니다.

  • 처음에는 맨 왼쪽 창에서 시작한 다음 ofwindow가 원래 문자열의 끝에 도달할 때까지 창을 계속 슬라이드합니다.

  • 도중에 발생 횟수가 필요한 발생 횟수와 같으면 문자열에서 해당 발생을 잘라내고 이렇게 얻은 새 문자열을 반환합니다.

  • 전체 문자열을 반복하는 경우 문자열에 subStr이 충분히 발생하지 않았으며 이 경우 -1을 반환하고 함수를 종료해야 함을 의미합니다.

마지막으로 string.prototype에 removeStr 속성을 추가하여 stringfunction으로 호출할 수 있도록 합니다.