在Node.js中如何解析带有头部标签行的自定义格式文件?
实现方案
这个自定义格式分为两部分,顶部是-- 键: 值格式的元数据块,和正文Markdown块之间用空行分隔,解析逻辑可以按以下方式实现:
const parse = (content) => { // 按换行符拆分所有内容行 const lines = content.split('\n') const meta = {} let contentStartIndex = 0 // 遍历收集元数据 for (let i = 0; i < lines.length; i++) { const line = lines[i].trim() // 遇到空行代表元数据块结束,跳出循环 if (!line) { contentStartIndex = i + 1 break } // 匹配-- 开头的元数据行 if (line.startsWith('-- ')) { // 切割键值,避免值本身包含冒号导致切割错误 const [keyPart, ...valueParts] = line.slice(2).split(':') const key = keyPart.trim().toLowerCase() const value = valueParts.join(':').trim() meta[key] = value } } // 剩余内容拼接为正文 const article = lines.slice(contentStartIndex).join('\n').trim() return { title: meta.title || '', author: meta.author || '', date: meta.date || '', article } }
补充说明
- 支持值中带冒号的元数据项,不会出现切割错误
- 缺失的元数据项默认返回空字符串,可根据需求自行调整默认值
- 如果需要返回所有自定义元数据项,可直接在返回值中展开meta对象即可
内容的提问来源于stack exchange,提问作者Diego Vallejo
相关产品推荐
相关产品推荐

