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

JavaScript - 문자의 k번째 모양을 대체하는 문자열 함수 작성

<시간/>

세 개의 인수를 받는 String.prototype 함수를 작성해야 한다고 가정해 보겠습니다.

  • 첫 번째 인수는 하위 문자열을 검색해야 하는 문자열입니다.
  • 두 번째 인수는 제거할 문자열의 발생 문자열입니다.
  • 세 번째 인수는 n, 문자열에서 제거할 하위 문자열의 n번째 발생과 같은 숫자입니다.

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

예시

다음은 코드입니다 -

const str = 'jkdsttjkdsre';
const subStr = 'jk';
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++;
   }
}
String.prototype.removeStr = removeStr;
console.log(str.removeStr(subStr, num));

이 함수는 먼저 다음을 확인합니다. subStr이 한 번도 나타나지 않으면 종료하고 -1을 반환해야 합니다.

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

처음에는 가장 왼쪽 창에서 시작한 다음 창 끝이 원래 문자열의 끝에 도달할 때까지 창을 계속 슬라이딩합니다. 도중에 발생 횟수가 필요한 발생 횟수와 같으면 문자열에서 해당 항목을 잘라내고 이렇게 얻은 새 문자열을 반환합니다.

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

마지막으로 문자열 함수로 호출할 수 있도록 removeStr 속성을 String.prototype에 추가합니다.

출력

이것은 콘솔에서 다음과 같은 출력을 생성합니다 -

jkdsttdsre