
本文介绍使用 Node.js 的 fs 模块与正则表达式处理文本文件,精准定位独立成行的 (C) 并将其追加至其前一行末尾,实现如 Word1 (C) 的格式转换,适用于自动化生成 TXT 文件后的即时内容修正。
本文介绍使用 node.js 的 `fs` 模块与正则表达式处理文本文件,精准定位独立成行的 `(c)` 并将其追加至其前一行末尾,实现如 `word1 (c)` 的格式转换,适用于自动化生成 txt 文件后的即时内容修正。
在实际开发中(尤其是生成日志、配置或报告类文本文件时),常遇到类似需求:某标记(如 (C))本应作为前一项的修饰符,却因生成逻辑被错误地写为独立一行。我们需要在文件落地后立即修复——删除该行,并将 (C) 追加到其上方最近的非空行末尾。
以下是一个健壮、可复用的 Node.js 解决方案:
✅ 核心思路
- 读取整个文件内容为字符串;
- 使用正则表达式匹配「前一行 + 换行符 + (C) 行」的组合;
- 将匹配结果替换为「前一行末尾添加空格和 (C)」;
- 特别处理跨平台换行符(\r\n 或 \n)及边界情况(如首行即为 (C))。
✅ 推荐实现代码(含容错与注释)
const fs = require('fs');
function mergeCIntoParent(filePath) {
try {
const content = fs.readFileSync(filePath, 'utf8');
// 正则说明:
// (?<h3>? 示例效果</h3><p><strong>原始文件 (output.txt):</strong></p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7155" title="Browser Js"><img
src="https://img.php.cn/upload/skill/000/000/081/179134209757570.jpg" alt="Browser Js" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill7155" title="Browser Js" class="overflowclass">Browser Js</a>
<p class="overflowclass">轻量级CDP浏览器控制,适用于AI代理。相较于内置浏览器工具,token消耗降低3‑10倍,仅在浏览时使用。</p>
</div>
<a rel="nofollow" href="/xiazai/skill7155" title="Browser Js" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div><pre class="brush:php;toolbar:false;">Word1
(C)
Word2
Word3处理后:
Word1 (C) Word2 Word3
? 注意:上述代码会保留原有空行结构,仅移动 (C) 至其逻辑上最近的非空上一行;若 (C) 出现在文件开头,则无父行可合并,该行将被直接删除(符合“无父则不移”原则)。
⚠️ 重要注意事项
- 编码安全:务必使用 'utf8' 编码读写,避免中文或特殊符号乱码;
- 路径校验:生产环境建议先用 fs.existsSync() 验证文件存在;
- 原子性保障:如需防中断风险,可先写入临时文件,再 fs.renameSync() 替换原文件;
- 扩展性提示:若需支持其他标记(如 (R)、(U)),可将 (C) 抽取为参数,配合动态正则构造。
通过该方案,你可在每次生成 TXT 文件后调用 mergeCIntoParent(),实现全自动、零人工干预的内容规范化,显著提升输出质量与下游解析可靠性。










