我有一个页眉和页脚文本文件,这两个文件都很长并且对所有用例都是常量。我不想在代码中声明它或在运行时读取它们。
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
答案 0 :(得分:3)
您可以尝试使用 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);