我试图创建一个脚本,使用一些模板文件,然后用一些数据替换文件的内容要求用户。
我一直在使用{{word}}
模式来替换特定的单词,但我希望能够根据用户输入的数据删除文件的整个部分。
我希望能够在模板文件中写入如下内容:
Some content that I always want.
{{<mySection>}}
Some conditional content.
More conditional content.
{{</mySection>}}
More content that I always want.
并且能够删除<mySection>
的全部内容(包括在内)或不取决于用户指定的内容。
现在,我使用fs-extra
来进行模式替换:
const templateContent = await fs.readFile(
`${templatePath}/TemplateContent.txt`,
{ encoding: 'utf-8' },
);
const outputContent = templateContent.replace(new RegExp(`{{${word}}}`, 'g'), value);
考虑到同一文件中可能有多个不同的部分,从简单性和性能来看,哪种方法是最好的?
我已经考虑过获取节的开头和结尾的索引,并在字符串中执行某种子字符串或拆分,然后再加入它,但我不知道这是否会非常性能明智,因为会有多个节,我必须多次执行该操作。
谢谢大家!
1条答案
按热度按时间hc8w905p1#
下面是一个使用fs-extra模块的示例实现:
在本例中,removeSectionFromFile函数将文件路径、开始标记和结束标记作为参数。它读取文件内容,使用indexOf查找开始和结束标记的索引,并使用slice删除标记之间的部分来构造修改后的内容。最后,它使用writeFile将修改后的内容写回文件。