如何使用文字模板?

时间:2015-09-14 09:34:53

标签: 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(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

1 个答案:

答案 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);