C# 如何使用文本模板?
我有一个页眉和页脚文本文件,对于所有用例,这两个文件都是长的和不变的。我不想在代码中声明它,也不想在运行时读取它们C# 如何使用文本模板?,c#,C#,我有一个页眉和页脚文本文件,对于所有用例,这两个文件都是长的和不变的。我不想在代码中声明它,也不想在运行时读取它们 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
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中的胡子模板引擎
示例:template.txt
some very long text in header
<%= content %>
some very long text in footer
我建议为此使用
Razor视图引擎
此引擎不限于处理HTML文件。它可以用于所有文本文件。您可以尝试使用Linq:
编辑:如果在一个文件中同时包含页眉和页脚(这不是一个好做法),则可以使用Select()
。例如,如果
标记了内容应更改的行:
var lines = File
.ReadLines(@"C:\HeaderAndFooter.txt")
.Select(line => line == "<%= content %>" ? "MyContent" : line);
...
var allText = String.Join(Environment.NewLine,
lines);
var行=文件
.ReadLines(@“C:\HeaderAndFooter.txt”)
.选择(行=>行==“”?“MyContent”:行);
...
var allText=String.Join(Environment.NewLine,
线路);
如果您想创建模板,您可以使用Antlr4.StringTemplate
哪个essential可以满足您的需要,默认情况下它使用“”或“$”作为分隔符这是一个简洁的解决方案,如果我只想将页眉和页脚放在一个文件中,我该怎么做?按照@CSharper?@Tim的建议使用视图引擎:在这种情况下,您可以稍微修改Linq,例如使用Select()
,请参见我的编辑。
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);
var lines = File
.ReadLines(@"C:\HeaderAndFooter.txt")
.Select(line => line == "<%= content %>" ? "MyContent" : line);
...
var allText = String.Join(Environment.NewLine,
lines);