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