Computer >> Máy Tính >  >> Lập trình >> Javascript

Thêm thẻ đoạn vào chuỗi con trong một chuỗi trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy chuỗi str làm đối số đầu tiên và một mảng chuỗi, arr làm đối số thứ hai. Chúng ta cần thêm một cặp đóng thẻ đoạn văn bản

để bọc các chuỗi con trong str tồn tại trong arr. Nếu hai chuỗi con như vậy chồng lên nhau, chúng ta chỉ cần gói chúng lại với nhau bằng một cặp thẻ đoạn đóng.

Ngoài ra, nếu hai chuỗi con được bao bọc bởi các thẻ đoạn liên tiếp, chúng ta cần kết hợp chúng.

Ví dụ -

Nếu chuỗi đầu vào và mảng là -

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

Sau đó, đầu ra phải là -

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

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

<p>kkkllm</p>m