我有以下代码来迭代目录中的所有文件:
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
}
})
})
})
})
如果我有这样的锚标签:
<a href="https://www.link.com/" target="_blank">link</a>
我怎样才能从文件中提取所有这些链接并将它们转换为像这样的降价链接:
[link](https://www.link.com/)
我正在使用节点来迭代目录中的文件。
我不确定您是否正在从.html
文件中读取?
如果是,那么我怀疑您会在文件中查找所有锚标签。
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')
。