首页 > 解决方案 > 如果位置和长度未知/可变,如何替换字符串?

问题描述

我想在纯文本中查找所有 URL。然后我想将这些 URL 包装成一个href以使它们可点击。

基本上,我正在努力将链接放回原处。到目前为止,我有这个:

创建锚标记:

  function createAnchorTag(anchor) {
      html = `<a href="${anchor}" target="about_blank" rel="noopener noreferrer">${anchor}</a>`;
      return html;
  }

查找所有href:

  let word = 'https';
  let areas = Array.from(document.querySelectorAll('.description'));

  areas.forEach(area => {
      if (area.innerText.includes('https')) {
        let str = area.innerText;
        let link = str.split(' ');

        for (let i=0; i < link.length; i++) {
          if(link[i].includes('https')) {
            let anchor = link[i];
            createAnchorTag(anchor);
            anchor = anchor.replace(anchor, html);
          }
        }
      }
  });
}

文本可能类似于: “这是我的文本。这是一个链接:https ://somelink.com然后还有更多文本。”

如何在我的文本中替换https://somelink.com ?

anchor = anchor.replace(anchor, html);不会将链接更新为可点击的替换。但如果我改用area += anchor.replace(anchor, html);它,它会附加一个可点击的链接。

标签: javascriptdom

解决方案


您需要替换相应区域内的 url 字符串。

area.replace(anchor, createAnchorTag(anchor))

推荐阅读