在 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 次瀏覽

啟動你的 事業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.