本文介绍使用 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免费学习笔记(深入)”;