在 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

更新于: 26-Feb-2021

536 次浏览

启动你的 事业

完成课程即可获得认证

开始
广告