【问题标题】:String Template - Results are different when Reading from File / Reading from String字符串模板 - 从文件读取/从字符串读取时结果不同
【发布时间】:2011-03-21 14:19:54
【问题描述】:
string template = "group simple; apply(it) ::= << $it:bold():italics()$ >> ";
StringTemplateGroup stg = new StringTemplateGroup(new StringReader(template));
stg.DefineTemplate("bold", "<b>$it$</b>");
stg.DefineTemplate("italics", "<i>$it$</i>");
StringTemplate st = stg.GetInstanceOf("apply");
st.SetAttribute("it", "name");
Console.WriteLine(st.ToString());

上面的结果是 $it:bold():italics()$ 我期待&lt;i&gt;&lt;b&gt;name&lt;/b&gt;&lt;/i&gt;

但是当从文件中读取模板时,它会按预期工作。

StringTemplateGroup stg = new StringTemplateGroup("page", "../../Templates");
stg.DefineTemplate("bold", "<b>$it$</b>");
stg.DefineTemplate("italics", "<i>$it$</i>");
StringTemplate st = stg.GetInstanceOf("apply"); //apply.st => $it:bold():italics()$
st.SetAttribute("it", "name");
Console.WriteLine(st.ToString());

输出如预期&lt;i&gt;&lt;b&gt;name&lt;/b&gt;&lt;/i&gt;

为什么它在第一种情况下不起作用?我错过了什么吗?

【问题讨论】:

    标签: c# stringtemplate


    【解决方案1】:

    <...> 是组文件中的默认分隔符。注意 StringTemplate v4 将在一周左右发布。

    【讨论】:

    • 我曾尝试使用 <...>,结果是 name:bold():italics().
    • 哦。那是C#版本;应该可以工作,但是......显然不是!
    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多