javascript - 如果位置和长度未知/可变,如何替换字符串?
问题描述
我想在纯文本中查找所有 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);
它,它会附加一个可点击的链接。
解决方案
您需要替换相应区域内的 url 字符串。
area.replace(anchor, createAnchorTag(anchor))
推荐阅读
- reactjs - 在 react-redux 和 spring boot 中上传 Multipart 文件时出现问题
- python - 如何在 discord.py 中创建 DM 命令
- python - 在 django 中选择房间后如何将房间可用性设置为 False
- android - 在 Firebase 实时数据库中查找附近的用户
- c++ - cpp中架构x86_64的未定义符号
- c - fork() 循环中的 4 个孩子
- mysql - 如果有人在交易发生时询问会发生什么?
- c++ - 如何比较和转换 const 引用和 const_iterator
- java - @Component bean 覆盖 @Bean 用于集合自动装配
- c++ - 子类化 QObject 和 Q_OBJECT 宏