首页 > 解决方案 > 将 html 锚点更改为 markdown

问题描述

我有以下代码来迭代目录中的所有文件:

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/)

我正在使用节点来遍历目录中的文件。

标签: javascriptnode.js

解决方案


我不确定您是否正在从.html文件中读取?

如果是,那么我怀疑您将在文件中查找所有锚标记。

let pattern = /<a.*?href="(.*?)".*?>(.*?)<\/a>/g,
    matches = text.match(pattern),
    new_text = matches.map(i => i.replace(pattern, '[$2]($1)'));

此代码段会将所有链接标签存储在一个数组中,并将它们全部转换为降价。这样你就可以new_text.join('\n')轻松地表演了。


推荐阅读