Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเพิ่มแท็กย่อหน้าให้กับสตริงย่อยภายในสตริงใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str เป็นอาร์กิวเมนต์แรกและอาร์เรย์ของสตริง arr เป็นอาร์กิวเมนต์ที่สอง เราจำเป็นต้องเพิ่มคู่ปิดของแท็กย่อหน้า

และ

เพื่อตัดสตริงย่อยใน str ที่มีอยู่ใน arr หากสตริงย่อยดังกล่าวทับซ้อนกัน เราจำเป็นต้องรวมเข้าด้วยกันด้วยแท็กย่อหน้าที่ปิดเพียงคู่เดียว

นอกจากนี้ หากสตริงย่อยสองสตริงที่ห่อด้วยแท็กย่อหน้าติดต่อกัน เราจำเป็นต้องรวมเข้าด้วยกัน

ตัวอย่างเช่น −

หากสตริงอินพุตและอาร์เรย์เป็น −

const str = 'kkkllmm';
const arr = ["kkk","kkl","lm"];

จากนั้นผลลัพธ์ควรเป็น −

const output = '<p>kkkllm</p>m';

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const str = 'kkkllmm';
const arr = ["kkk","kkl","lm"];
var addParagraphTag = (str = [], arr = []) => {
   if(!arr.length){
      return str
   };
   const { length } = str;
   let paraBoolean = new Array(length).fill(false);
   let end = 0;
   for (let i = 0; i < length; i++){
      for (let j = 0; j < arr.length; j++){
         let word = arr[j];
         if (str.startsWith(word,i)) {
            end = Math.max(end, i + word.length);
         };
      }
      paraBoolean[i] = end > i;
   };
   let curr = 0;
   let newStr = '';
   while (curr < length) {
      while(paraBoolean[curr] === false) {
         newStr += str[curr++];
      }
      if (curr >= length) break;
      newStr += '<p>';
      let startBold = curr;
      while (paraBoolean[curr] === true) curr++;
      newStr += str.slice(startBold, curr);
      newStr += '</p>';
   };
   return newStr;
};
console.log(addParagraphTag(str, arr));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

<p>kkkllm</p>m