本文介绍使用 Node.js 的 fs 模块读取文本文件,通过正则表达式定位独立的 (C) 行,并将其内联追加至其前一行末尾,实现结构化内容重组。适用于自动化生成 TXT 文件后的后处理场景。
本文介绍使用 node.js 的 `fs` 模块读取文本文件,通过正则表达式定位独立的 `(c)` 行,并将其内联追加至其前一行末尾,实现结构化内容重组。适用于自动化生成 txt 文件后的后处理场景。
要实现“删除含 (C) 的独立行,并将其移至前一行末尾”这一需求,核心思路是:将 (C) 所在行与其上一行合并,而非简单替换或全局查找。原始答案中的正则虽能输出预期效果,但逻辑存在隐患(例如匹配任意含 (C) 的行并整体替换为 " (C)",会丢失原行前导内容,且无法保证严格“归属上一行”)。下面提供更鲁棒、语义清晰的解决方案。
const fs = require('fs');function mergeCWithParent(filePath) { const content = fs.readFileSync(filePath, 'utf8'); const lines = content.split(/r?n/); const resultLines = []; for (let i = 0; i < lines.length; i++) { const line = lines[i].trim(); // 若当前行为纯 "(C)"(忽略空格),且前一行非空,则合并到前一行 if (line === '(C)' && resultLines.length > 0 && resultLines[resultLines.length - 1].trim() !== '') { const lastLine = resultLines.pop().trim(); resultLines.push(lastLine + ' (C)'); } // 其他情况:保留原行(包括空行、含 `(C)` 的非独立行等) else if (line !== '(C)') { resultLines.push(lines[i]); // 保持原始换行与空白格式 } } return resultLines.join('n');}// 使用示例const updatedContent = mergeCWithParent('./myFile.txt');console.log(updatedContent);// 可选:写回文件// fs.writeFileSync('./myFile.txt', updatedContent);
输入文件 myFile.txt:
Word1(C)Word2Word3
输出结果:
Word1 (C)Word2Word3
✅ 正确处理空行;
✅ 仅合并独立、完整为 (C) 的行;
✅ 保留原有缩进与空行结构;
✅ 不误伤如 Wor(C)d1 或 Word6 (C) 等嵌入式 (C)。
此方法逻辑清晰、可维护性强,精准满足“移动至立即父行”的语义要求,是自动化文本后处理的可靠实践。
立即学习“Java免费学习笔记(深入)”;
阿里云百炼Token Plan和Coding Plan省钱订阅计划:如何选择?有哪些区别?
最新:阿里云万小智收费价格:活动15元1个月:180元1年:轻量版、标准版及高级版功能支持
移动端的AI助手不应只是客服窗口:更应借助AI能力将小程序服务变成可调用能力
AI搜索引用到客户咨询:中间隔着三层数据漏斗
【码道代码智能体】码道界面焕新:AI 懂需求 开发更顺手
CodexBar:把 AI 编码额度接入 macOS 菜单栏