我有以下代码来迭代目录中的所有文件:
fs.readdir(root, (err, folders) => {
folders.forEach(folder => {
const current = path.join(root, folder)
fs.readdir(current, (err, files) => {
if (err) {
return
}
files.filter(f => path.extname(f) === '.md').forEach(f => {
const file = path.join(current, f)
console.log(file)
})
})
fs.readFile(current, 'utf8', (err, text) => {
if (err) {
return console.log(err)
}
// convert anchors to markdown
fs.writeFile(current, text.join('\n'), 'utf8', err => {
if (err) {
console.log(err)
throw err
}
})
})
})
})
如果我有这样的 anchor 标签:
<a href="https://www.link.com/" target="_blank">link</a>
我怎样才能将所有这些链接从一个文件中提取出来,并将它们转换成这样的 Markdown 链接:
[link](https://www.link.com/)
我正在使用 Node 遍历目录中的文件。
最佳答案
我不确定您是否正在读取 .html
文件?
如果是,那么我怀疑您会在文件中查找所有 anchor 标记。
let pattern = /<a.*?href="(.*?)".*?>(.*?)<\/a>/g,
matches = text.match(pattern),
new_text = matches.map(i => i.replace(pattern, '[$2]($1)'));
此代码段会将所有链接标签存储在一个数组中,并将它们全部转换为 markdown。这样您就可以轻松地执行 new_text.join('\n')
。
关于javascript - 将 html anchor 更改为 markdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52636064/