将段落标签添加到JavaScript中字符串的子字符串中

我们需要编写一个JavaScript函数,该函数将字符串str作为第一个参数,并将字符串数组arr作为第二个参数。我们需要添加一对封闭的段落标签<p>和</ p>,以将存在于arr中的str中的子字符串包装起来。如果两个这样的子字符串重叠,我们只需要通过一对封闭的段落标签将它们包装在一起。

另外,如果两个由段落标签包裹的子字符串是连续的,我们需要将它们组合起来。

例如-

如果输入字符串和数组为-

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