如何使用文本模板
本文关键字:文本 何使用 | 更新日期: 2023-09-27 18:12:41
我有一个页眉和页脚文本文件,这两个文件都很长,对于所有用例都是恒定的。我不想在代码中声明它或在运行时读取它们。
const string header = "some very long text in header";
const string footer = "some very long text in footer";
string content = "my CONTENT";
StringBuilder sb = new StringBuilder();
sb.Append(header);
sb.Append(content);
sb.Append(footer);
var allText = sb.toString(); // all text here
是否可以使用一些文本模板?然后在HTML中生成所有的信息,就像那些Mustache模板引擎一样?
示例:template.txt
some very long text in header
<%= content %>
some very long text in footer
输出some very long text in header
my CONTENT
some very long text in footer
您可以尝试使用Linq:
var header = File
.ReadLines(@"C:'MyHeader.txt");
var footer = File
.ReadLines(@"C:'MyFooter.txt");
var lines = header
.Concat(new String[] {"My Content"})
.Concat(footer);
...
var allText = String.Join(Environment.NewLine,
lines);
编辑:如果你有头和脚在一个文件(不是一个好的做法),你可以使用Select()
。例如,如果<%= content %>
标记了应该为内容更改的行:
var lines = File
.ReadLines(@"C:'HeaderAndFooter.txt")
.Select(line => line == "<%= content %>" ? "MyContent" : line);
...
var allText = String.Join(Environment.NewLine,
lines);
我建议为此目的使用Razor view Engine
ASP。净剃刀
此工程不限于处理HTML文件。可用于所有文本文件
如果你想创建模板,你可以使用Antlr4.StringTemplate
,这是你想要的,默认情况下,它使用'<'和'>'或'$'作为分隔符